Python: επανάληψη
for και while, και οι κλασικοί αλγόριθμοι: μέτρηση, άθροισμα, μέγιστο.
40 λεπτά
Θα μάθεις να
- Να χρησιμοποιείς τον βρόχο for με τη range(), και να ξέρεις ότι το τέλος δεν περιλαμβάνεται.
- Να χρησιμοποιείς τον βρόχο while και να εξασφαλίζεις ότι τερματίζει.
- Να εφαρμόζεις τους κλασικούς αλγορίθμους: μέτρηση, άθροισμα, μέσος όρος, μέγιστο και ελάχιστο.
- Να συμπληρώνεις πίνακα τιμών για έναν βρόχο.
Γιατί χρειαζόμαστε επανάληψη
Για να εμφανίσεις τους αριθμούς από το ως το αρκούν πέντε print. Για το ως το όχι. Η δομή επανάληψης (βρόχος, loop) εκτελεί ένα μπλοκ εντολών ξανά και ξανά, και είναι αυτό που κάνει τον υπολογιστή χρήσιμο: δεν βαριέται την εκατοστή φορά.
Η Python έχει δύο βρόχους:
| Βρόχος | Χρησιμοποιείται όταν |
|---|---|
for | ξέρεις από πριν πόσες φορές, ή θέλεις να περάσεις από κάθε στοιχείο μιας σειράς |
while | επαναλαμβάνεις όσο ισχύει μια συνθήκη, χωρίς να ξέρεις πόσες φορές θα χρειαστεί |
Ο βρόχος for και η range()
for i in range(1, 6):
print(i, i * i)
1 1
2 4
3 9
4 16
5 25
Η μεταβλητή i παίρνει με τη σειρά κάθε τιμή που δίνει η range(), και για κάθε μία εκτελείται το μπλοκ με την εσοχή. Όπως στο if, η γραμμή τελειώνει με :.
Η range() έχει τρεις μορφές:
| Κλήση | Τιμές | Πλήθος |
|---|---|---|
range(5) | 0, 1, 2, 3, 4 | |
range(1, 6) | 1, 2, 3, 4, 5 | |
range(10, 0, -2) | 10, 8, 6, 4, 2 |
Ο βρόχος while
n = 1
while n < 100:
n = n * 2
print(n)
128
Ο βρόχος ελέγχει τη συνθήκη πριν από κάθε επανάληψη. Αν είναι αληθής, εκτελεί το μπλοκ και ξαναγυρίζει στον έλεγχο. Αν είναι ψευδής, προχωρά στην εντολή μετά τον βρόχο. Αν η συνθήκη είναι ψευδής από την αρχή, το μπλοκ δεν εκτελείται ούτε μία φορά.
Ο while ταιριάζει όταν δεν ξέρεις πόσα δεδομένα θα έρθουν. Ένα συνηθισμένο σχήμα: διαβάζεις αριθμούς μέχρι ο χρήστης να δώσει , που λειτουργεί ως τιμή τερματισμού (φρουρός, sentinel):
total = 0
x = int(input())
while x != 0:
total = total + x
x = int(input())
print(total)
49
Με είσοδο , , και , εμφανίζεται . Πρόσεξε ότι η input() γράφεται δύο φορές: μία πριν από τον βρόχο, για τον πρώτο έλεγχο, και μία στο τέλος του μπλοκ, για τον επόμενο. Αν ο χρήστης δώσει αμέσως, ο βρόχος δεν εκτελείται και εμφανίζεται .
Οι κλασικοί αλγόριθμοι
Τέσσερα μοτίβα εμφανίζονται ξανά και ξανά. Όλα έχουν την ίδια δομή: αρχική τιμή πριν από τον βρόχο, ενημέρωση μέσα, αποτέλεσμα μετά.
Στα παραδείγματα οι βαθμοί είναι γραμμένοι σε λίστα, ανάμεσα σε αγκύλες. Το for g in grades: περνά από κάθε βαθμό με τη σειρά. Οι λίστες είναι το θέμα του επόμενου μαθήματος.
Άθροισμα και μέσος όρος
grades = [14, 18, 9, 18, 16]
total = 0
for g in grades:
total = total + g
print(total, total / len(grades))
75 15.0
Το total ξεκινά από , το ουδέτερο στοιχείο της πρόσθεσης. Η len(grades) δίνει το πλήθος των στοιχείων, εδώ .
Μέτρηση
grades = [14, 18, 9, 18, 16]
count = 0
for g in grades:
if g >= 15:
count = count + 1
print(count)
3
Ο μετρητής αυξάνεται κατά κάθε φορά που ένα στοιχείο ικανοποιεί τη συνθήκη. Είναι το άθροισμα, μόνο που προσθέτεις αντί για την τιμή.
Μέγιστο και ελάχιστο
grades = [14, 18, 9, 18, 16]
best = grades[0]
for g in grades:
if g > best:
best = g
print(best)
18
Το grades[0] είναι το πρώτο στοιχείο της λίστας. Το μέγιστο ξεκινά από εκεί: «ο καλύτερος που έχω δει μέχρι στιγμής είναι ο πρώτος». Κάθε επόμενος που είναι μεγαλύτερος τον αντικαθιστά. Για το ελάχιστο αλλάζει μόνο η σύγκριση, σε g < worst.
Λυμένα παραδείγματα
Παράδειγμα 1
Πόσες φορές εκτελείται το σώμα του for i in range(3, 15, 4) και ποιες τιμές παίρνει το i;
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 2
Γράψε πρόγραμμα που βρίσκει τον μέσο όρο μόνο των θετικών αριθμών μιας λίστας, π.χ. της [4, -2, 10, 0, 7].
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 3
Ποιο είναι το μικρότερο n για το οποίο το άθροισμα 1 + 2 + … + n ξεπερνά το 50;
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Ασκήσεις
Πρώτα ερωτήσεις με επιλογές: διαλέγεις, πατάς «Έλεγξε» και μαθαίνεις αμέσως αν το βρήκες και γιατί. Στο τέλος, λίγες ασκήσεις χωρίς επιλογές — εκεί κρύβεται μόνο η απάντηση.
Τα κατάφερες;
- Να χρησιμοποιείς τον βρόχο for με τη range(), και να ξέρεις ότι το τέλος δεν περιλαμβάνεται.
- Να χρησιμοποιείς τον βρόχο while και να εξασφαλίζεις ότι τερματίζει.
- Να εφαρμόζεις τους κλασικούς αλγορίθμους: μέτρηση, άθροισμα, μέσος όρος, μέγιστο και ελάχιστο.
- Να συμπληρώνεις πίνακα τιμών για έναν βρόχο.
Λύσε τις ασκήσεις πιο πάνω και θα δεις εδώ πού στέκεσαι.