Python: δομή επιλογής
if, elif, else, και οι λογικοί τελεστές and, or, not.
35 λεπτά
Θα μάθεις να
- Να γράφεις δομές επιλογής με if, if-else και if-elif-else, με σωστή εσοχή.
- Να χρησιμοποιείς τους τελεστές σύγκρισης και να ξεχωρίζεις το == από το =.
- Να συνδυάζεις συνθήκες με and, or, not και να υπολογίζεις την τιμή τους.
- Να εξηγείς γιατί η σειρά των κλάδων σε μια αλυσίδα elif επηρεάζει το αποτέλεσμα.
Όταν το πρόγραμμα πρέπει να αποφασίσει
Μέχρι τώρα κάθε πρόγραμμα εκτελούσε όλες τις εντολές του, τη μία μετά την άλλη. Αυτή είναι η ακολουθία. Τα περισσότερα προβλήματα όμως θέλουν αποφάσεις: αν ο βαθμός είναι τουλάχιστον ο μαθητής προάγεται, αλλιώς όχι. Για αυτό υπάρχει η δομή επιλογής.
Η εντολή if
temperature = 31
if temperature > 30:
print("Κάνει ζέστη")
print("Πάρε νερό")
print("Καλή σου μέρα")
Κάνει ζέστη
Πάρε νερό
Καλή σου μέρα
Τρία πράγματα κάνουν αυτές τις γραμμές να δουλεύουν:
- Η συνθήκη
temperature > 30είναι έκφραση που βγάζειTrueήFalse. - Η άνω και κάτω τελεία
:στο τέλος της γραμμής τουifείναι υποχρεωτική. - Η εσοχή (indentation, συνήθως τέσσερα κενά) δείχνει ποιες εντολές ανήκουν στο
if. Το «Καλή σου μέρα» δεν έχει εσοχή, οπότε εκτελείται πάντα.
Αν η θερμοκρασία ήταν , θα εμφανιζόταν μόνο το «Καλή σου μέρα».
Τελεστές σύγκρισης
| Τελεστής | Σημασία | Παράδειγμα με x = 5 |
|---|---|---|
== | ίσο | x == 5 είναι True |
!= | διάφορο | x != 5 είναι False |
< > | μικρότερο, μεγαλύτερο | x > 3 είναι True |
<= >= | μικρότερο ή ίσο, μεγαλύτερο ή ίσο | x >= 5 είναι True |
if και else
Όταν υπάρχουν δύο περιπτώσεις που αποκλείουν η μία την άλλη, το else πιάνει ό,τι δεν πέρασε από το if:
grade = 9.5
if grade >= 10:
print("Προάγεται")
else:
print("Απορρίπτεται")
Απορρίπτεται
Το else δεν έχει συνθήκη. Εκτελείται ακριβώς όταν η συνθήκη του if είναι ψευδής.
Πολλαπλή επιλογή με elif
Για περισσότερες από δύο περιπτώσεις υπάρχει το elif (από το «else if»). Ένα εισιτήριο κοστίζει: δωρεάν κάτω από ετών, ευρώ κάτω από , ευρώ από και πάνω, και ευρώ σε κάθε άλλη περίπτωση.
age = 70
if age < 6:
price = 0
elif age < 18:
price = 5
elif age >= 65:
price = 4
else:
price = 8
print(price)
4
Η αλυσίδα ελέγχει τις συνθήκες με τη σειρά και εκτελεί μόνο τον πρώτο κλάδο που βρίσκει αληθή. Γι' αυτό το elif age < 18 δεν χρειάζεται να λέει «και age >= 6»: αν η ηλικία ήταν κάτω από , η εκτέλεση δεν θα είχε φτάσει καν εκεί.
Λογικοί τελεστές: and, or, not
Μια συνθήκη μπορεί να χτιστεί από μικρότερες:
| Τελεστής | Είναι True όταν |
|---|---|
a and b | και οι δύο είναι True |
a or b | τουλάχιστον μία είναι True |
not a | η a είναι False |
age = 16
has_ticket = True
print(age >= 15 and has_ticket)
print(age < 12 or age > 65)
print(not has_ticket)
True
False
False
Η Python δέχεται και αλυσιδωτή σύγκριση, όπως τη γράφεις στα μαθηματικά: το 0 <= x <= 20 σημαίνει 0 <= x and x <= 20. Στη ΓΛΩΣΣΑ της Γ΄ Λυκείου αυτό δεν επιτρέπεται, οπότε αν το συναντήσεις εκεί, θυμήσου ότι είναι ιδιαιτερότητα της Python.
Εμφωλευμένη επιλογή
Ένα if μπορεί να βρίσκεται μέσα σε άλλο. Η εσοχή δείχνει ποιο ανήκει πού:
grade = 17
absences = 20
if absences <= 114:
if grade >= 10:
print("Προάγεται")
else:
print("Παραπέμπεται")
else:
print("Επαναλαμβάνει λόγω απουσιών")
Προάγεται
Τα όρια του παραδείγματος είναι ενδεικτικά. Αυτό που μετράει είναι η δομή: ο βαθμός εξετάζεται μόνο όταν οι απουσίες είναι μέσα στο όριο.
Λυμένα παραδείγματα
Παράδειγμα 1
Ένα έτος είναι δίσεκτο αν διαιρείται με το 4 αλλά όχι με το 100, ή αν διαιρείται με το 400. Γράψε τη συνθήκη σε Python και έλεγξέ τη για τα έτη 2024, 1900 και 2000.
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 2
Στο πρόγραμμα του εισιτηρίου κάποιος γράφει πρώτο τον κλάδο age < 18 και μετά τον age < 6. Τι πληρώνει ένα παιδί 4 ετών;
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 3
Γράψε πρόγραμμα που για έναν ακέραιο n εμφανίζει αν είναι θετικός, αρνητικός ή μηδέν, και αν είναι άρτιος ή περιττός.
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Ασκήσεις
Πρώτα ερωτήσεις με επιλογές: διαλέγεις, πατάς «Έλεγξε» και μαθαίνεις αμέσως αν το βρήκες και γιατί. Στο τέλος, λίγες ασκήσεις χωρίς επιλογές — εκεί κρύβεται μόνο η απάντηση.
Τα κατάφερες;
- Να γράφεις δομές επιλογής με if, if-else και if-elif-else, με σωστή εσοχή.
- Να χρησιμοποιείς τους τελεστές σύγκρισης και να ξεχωρίζεις το == από το =.
- Να συνδυάζεις συνθήκες με and, or, not και να υπολογίζεις την τιμή τους.
- Να εξηγείς γιατί η σειρά των κλάδων σε μια αλυσίδα elif επηρεάζει το αποτέλεσμα.
Λύσε τις ασκήσεις πιο πάνω και θα δεις εδώ πού στέκεσαι.