Μετάβαση στο περιεχόμενο

Python: δομή επιλογής

if, elif, else, και οι λογικοί τελεστές and, or, not.

35 λεπτά

Θα μάθεις να

  1. Να γράφεις δομές επιλογής με if, if-else και if-elif-else, με σωστή εσοχή.
  2. Να χρησιμοποιείς τους τελεστές σύγκρισης και να ξεχωρίζεις το == από το =.
  3. Να συνδυάζεις συνθήκες με and, or, not και να υπολογίζεις την τιμή τους.
  4. Να εξηγείς γιατί η σειρά των κλάδων σε μια αλυσίδα elif επηρεάζει το αποτέλεσμα.

Όταν το πρόγραμμα πρέπει να αποφασίσει

Μέχρι τώρα κάθε πρόγραμμα εκτελούσε όλες τις εντολές του, τη μία μετά την άλλη. Αυτή είναι η ακολουθία. Τα περισσότερα προβλήματα όμως θέλουν αποφάσεις: αν ο βαθμός είναι τουλάχιστον 1010 ο μαθητής προάγεται, αλλιώς όχι. Για αυτό υπάρχει η δομή επιλογής.

Η εντολή if

temperature = 31
if temperature > 30:
    print("Κάνει ζέστη")
    print("Πάρε νερό")
print("Καλή σου μέρα")
Κάνει ζέστη
Πάρε νερό
Καλή σου μέρα

Τρία πράγματα κάνουν αυτές τις γραμμές να δουλεύουν:

  1. Η συνθήκη temperature > 30 είναι έκφραση που βγάζει True ή False.
  2. Η άνω και κάτω τελεία : στο τέλος της γραμμής του if είναι υποχρεωτική.
  3. Η εσοχή (indentation, συνήθως τέσσερα κενά) δείχνει ποιες εντολές ανήκουν στο if. Το «Καλή σου μέρα» δεν έχει εσοχή, οπότε εκτελείται πάντα.

Αν η θερμοκρασία ήταν 2525, θα εμφανιζόταν μόνο το «Καλή σου μέρα».

Τελεστές σύγκρισης

ΤελεστήςΣημασίαΠαράδειγμα με 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»). Ένα εισιτήριο κοστίζει: δωρεάν κάτω από 66 ετών, 55 ευρώ κάτω από 1818, 44 ευρώ από 6565 και πάνω, και 88 ευρώ σε κάθε άλλη περίπτωση.

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»: αν η ηλικία ήταν κάτω από 66, η εκτέλεση δεν θα είχε φτάσει καν εκεί.

Η ίδια αλυσίδα για age = 12

Κάθε γραμμή είναι ένας έλεγχος. Πρόσεξε πού σταματά η αλυσίδα.

ΒήμαΣυνθήκηΤιμήΤι γίνεται
Ζωντανή ενημέρωση

Λογικοί τελεστές: 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 εμφανίζει αν είναι θετικός, αρνητικός ή μηδέν, και αν είναι άρτιος ή περιττός.

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Ασκήσεις

Πρώτα ερωτήσεις με επιλογές: διαλέγεις, πατάς «Έλεγξε» και μαθαίνεις αμέσως αν το βρήκες και γιατί. Στο τέλος, λίγες ασκήσεις χωρίς επιλογές — εκεί κρύβεται μόνο η απάντηση.

Πολλαπλή επιλογήΆσκηση 1 από 14
Ποια γραμμή ελέγχει σωστά αν η x είναι ίση με 5;

Τα κατάφερες;

  • Να γράφεις δομές επιλογής με if, if-else και if-elif-else, με σωστή εσοχή.
  • Να χρησιμοποιείς τους τελεστές σύγκρισης και να ξεχωρίζεις το == από το =.
  • Να συνδυάζεις συνθήκες με and, or, not και να υπολογίζεις την τιμή τους.
  • Να εξηγείς γιατί η σειρά των κλάδων σε μια αλυσίδα elif επηρεάζει το αποτέλεσμα.

Λύσε τις ασκήσεις πιο πάνω και θα δεις εδώ πού στέκεσαι.