Αποστολέας Θέμα: διαγωνισμα Python ΚΕΦ 3-5  (Αναγνώστηκε 3268 φορές)

triantaf

  • Νέος
  • *
  • Μηνύματα: 8
διαγωνισμα Python ΚΕΦ 3-5
« στις: 23 Ιαν 2017, 12:26:59 μμ »
Ενα απλό διαγώνισμα για επανάληψη κεφ 3-5

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3525
  • to Iterate is human to Recurse divine
Απ: διαγωνισμα Python ΚΕΦ 3-5
« Απάντηση #1 στις: 23 Ιαν 2017, 01:34:07 μμ »
Προσοχή όταν ζητάμε μετατροπή μεταξύ δομών επανάληψης διότι στην Python οι δομές while/for δεν είναι "ισοδύναμες" Για παράδειγμα τα δυο παρακάτω τμήματα κώδικα στο τέλος δεν θα εμφανίσουν τον ίδιο αριθμό:
Κώδικας: Python
  1. sum = 0
  2. for i in range(10):
  3.      sum += i
  4. print i
Εδώ η for θα εμφανίσει στο τέλος τον αριθμό 9

ενώ η while παρακάτω
Κώδικας: Python
  1. sum = 0
  2. i = 0
  3. while i<10 :
  4.      sum += i
  5.      i = i + 1
  6. print i
θα εμφανίσει 10
Αυτό συμβαίνει διότι στη for η μεταβλητή i δεν αυξάνεται αλλά διατρέχει τα στοιχεία μιας λίστας όπως φαίνεται παρακάτω:
Κώδικας: Python
  1. sum = 0
  2. for i in [0,1,2,3,4,5,6,7,8,9]:
  3.      sum += i
  4. print i
« Τελευταία τροποποίηση: 23 Ιαν 2017, 01:45:57 μμ από evry »
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

triantaf

  • Νέος
  • *
  • Μηνύματα: 8
Απ: διαγωνισμα Python ΚΕΦ 3-5
« Απάντηση #2 στις: 23 Ιαν 2017, 02:01:50 μμ »
σωστα και ευχαριστώ , η προσπάθεια όμως μετατροπής δίνει την κατανόηση της διαφοράς

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3525
  • to Iterate is human to Recurse divine
Απ: διαγωνισμα Python ΚΕΦ 3-5
« Απάντηση #3 στις: 23 Ιαν 2017, 02:10:29 μμ »
σίγουρα οι ασκήσεις αυτές έχουν νόημα απλά η πρόταση είναι να δίνουμε μια εκφώνηση στην οποία να μην μιλάμε για ισοδύναμα τμήματα γιατί δεν υλοποιούν τα ίδια βήματα, αλλά για τμήματα κώδικα που εμφανίζουν τους ίδιους αριθμούς.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

dimitrios67

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 109
Απ: διαγωνισμα Python ΚΕΦ 3-5
« Απάντηση #4 στις: 23 Ιαν 2017, 10:10:52 μμ »
δηλ. η Python εχει "iterator" στο for....προχωρημενος προγραμματισμος....
Οι μαθητες μπορουν να ανταποκριθούν σε τετοιες εννοιες;
Η εμπειρια σας τι λεει;

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3525
  • to Iterate is human to Recurse divine
Απ: διαγωνισμα Python ΚΕΦ 3-5
« Απάντηση #5 στις: 23 Ιαν 2017, 10:50:46 μμ »
Στην τρίτη γυμνασίου που το δοκιμάζω μια χαρά ανταποκρίνονται.
Σαν έννοια είναι πιο εύκολο από την κλασική for που κρύβει τον μετρητή. Μπορεί εμάς να μας φαίνεται προχωρημένο γιατί έχουμε συνηθίσει αλλιώς.
Για παράδειγμα το παρακάτω τμήμα κώδικα:
Κώδικας: Python
  1. for i in [4,6,8,10]:
  2.    print i*i

μπορεί να εξηγηθεί ως εξής:

Κώδικας: [Επιλογή]
Για κάθε αριθμό της λίστας [4,6,8,10]:
     Εμφάνισε το τετράγωνό του

Μπορεί κανείς να κάνει πιο απλά παραδείγματα όπως το παρακάτω:
Κώδικας: Python
  1. for team in ['aek', 'paok', 'pao', 'ethnikos']:
  2.      print team + ' ' + team
Δεν φαίνεται πουθενά δείκτης που να αυξάνεται κάτι που δυσκολεύει πολύ τους μαθητές στη for.
Απλά θα πρέπει από πριν να δείξει ο καθηγητής μερικά παραδείγματα με απλές λίστες στον διερμηνευτή.

ΥΓ. Το παραπάνω παράδειγμα το έκανα σε σχολείο του Πειραιά  >:D
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

triantaf

  • Νέος
  • *
  • Μηνύματα: 8
Απ: διαγωνισμα Python ΚΕΦ 3-5
« Απάντηση #6 στις: 31 Ιαν 2017, 10:25:06 πμ »
αυτο ζητηθηκε απο τους μαθητες (.py file το επισυναπτομενο)
« Τελευταία τροποποίηση: 31 Ιαν 2017, 07:30:24 μμ από triantaf »