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

Αποφάσεις στην Python

if, elif, else και λογικές συνθήκες.

35 λεπτά

Θα μάθεις να

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

Ένα πρόγραμμα που αποφασίζει

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

Στον ψευδοκώδικα της Β΄ αυτό λεγόταν δομή επιλογής και γραφόταν ΑΝ … ΤΟΤΕ … ΑΛΛΙΩΣ … ΤΕΛΟΣ_ΑΝ. Στην Python γράφεται με τις λέξεις if, elif και else.

n = int(input("Δώσε ακέραιο: "))
if n % 2 == 0:
    print(n, "είναι άρτιος")
else:
    print(n, "είναι περιττός")

Με είσοδο 7:

Δώσε ακέραιο: 7
7 είναι περιττός

Το n % 2 είναι το υπόλοιπο της διαίρεσης με το 22. Οι άρτιοι αφήνουν υπόλοιπο 00, οι περιττοί 11.

Άνω-κάτω τελεία και εσοχή

Δύο λεπτομέρειες που η Python δεν συγχωρεί:

  1. Η γραμμή του if (και του elif, και του else) τελειώνει με άνω-κάτω τελεία :.
  2. Οι εντολές που ανήκουν στον κλάδο γράφονται με εσοχή (indentation): τέσσερα κενά πιο μέσα.

Στον ψευδοκώδικα το ΤΕΛΟΣ_ΑΝ έδειχνε πού κλείνει η επιλογή. Στην Python δεν υπάρχει τέτοια λέξη: η εσοχή είναι αυτή που το δείχνει. Μόλις μια γραμμή γυρίσει στο αριστερό περιθώριο, η επιλογή τελείωσε και η γραμμή εκτελείται πάντα.

vathmos = 8
if vathmos >= 10:
    print("Πέρασες")
    print("Συγχαρητήρια")
print("Τέλος προγράμματος")

Εδώ τυπώνεται μόνο το Τέλος προγράμματος. Αν η δεύτερη print δεν είχε εσοχή, το «Συγχαρητήρια» θα τυπωνόταν και σε όποιον κόπηκε.

Αν ξεχάσεις την εσοχή κάτω από ένα if, η Python δεν εκτελεί τίποτα και σταματά με IndentationError.

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

ΤελεστήςΣημαίνειΠαράδειγμα με x = 7
==ίσοx == 7 είναι True
!=διάφοροx != 7 είναι False
<, >μικρότερο, μεγαλύτεροx > 5 είναι True
<=, >=μικρότερο ή ίσο, μεγαλύτερο ή ίσοx <= 6 είναι False

Κάθε σύγκριση έχει αποτέλεσμα True (αληθής) ή False (ψευδής). Αυτές οι δύο τιμές έχουν δικό τους τύπο, τον bool.

Πολλές περιπτώσεις: elif

Όταν οι περιπτώσεις είναι περισσότερες από δύο, προσθέτεις κλάδους elif («else if», αλλιώς αν). Ένα μουσείο χρεώνει ανάλογα με την ηλικία:

ilikia = int(input("Ηλικία: "))
if ilikia < 6:
    print("Δωρεάν είσοδος")
elif ilikia < 18:
    print("Μαθητικό: 4 ευρώ")
elif ilikia >= 65:
    print("Μειωμένο: 5 ευρώ")
else:
    print("Κανονικό: 8 ευρώ")

Για ηλικία 1414 τυπώνεται Μαθητικό: 4 ευρώ, για 4040 τυπώνεται Κανονικό: 8 ευρώ.

Η ηλικία 70 περνά από την αλυσίδα

Πριν πατήσεις, προσπάθησε να πεις ποια συνθήκη θα είναι η πρώτη αληθής.

ΒήμαΚλάδοςΈλεγχοςΤιμήΤυπώνεται
Ζωντανή ενημέρωση

Το else στο τέλος είναι προαιρετικό. Χωρίς αυτό, αν καμία συνθήκη δεν αληθεύει, απλώς δεν εκτελείται κανένας κλάδος.

Σύνθετες συνθήκες: and, or, not

ΤελεστήςΑληθής ότανΠαράδειγμα με x = 7
andκαι οι δύο συνθήκες αληθεύουνx > 5 and x < 6 είναι False
orτουλάχιστον μία αληθεύειx > 5 or x < 6 είναι True
notη συνθήκη είναι ψευδήςnot x > 5 είναι False

Αντίθετα με τον ψευδοκώδικα, η Python δέχεται και τη διπλή σύγκριση των μαθηματικών: το 0 <= x <= 10 σημαίνει ακριβώς 0 <= x and x <= 10.

Λυμένα παραδείγματα

Παράδειγμα 1

Ένα έτος είναι δίσεκτο αν διαιρείται με το 4 αλλά όχι με το 100, ή αν διαιρείται με το 400. Γράψε πρόγραμμα που διαβάζει έτος και λέει αν είναι δίσεκτο.

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

Παράδειγμα 2

Με vathmos = 16, τι τυπώνουν τρία ξεχωριστά if (για 10, 15 και 18) και τι τυπώνει η αλυσίδα if-elif με τους ίδιους ελέγχους από το 18 προς τα κάτω;

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

Ασκήσεις

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

Πολλαπλή επιλογήΆσκηση 1 από 14
Μια αλυσίδα έχει τρεις κλάδους: if x > 10 τυπώνει «Α», elif x > 5 τυπώνει «Β», else τυπώνει «Γ». Τι τυπώνεται για x = 12;

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

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

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