Python

ΕΝΟΤΗΤΑ 9 - If/Else Statements and Logical Operators

image description

Όπως όλες οι γλώσσες προγραμματισμού, έτσι και η Python μας δίνει την δυνατότητα να γράψουμε κώδικα που αποφασίζει από μόνο του για την ροή εκτέλεσης του προγράμματος βασιζόμενο σε κάποιες συνθήκες. Στο σημερινό δωρεάν μάθημα Python, θα αναλύσουμε την σύνταξη αλλά και την χρήση των if-else statements αλλά και την χρησιμότητα των logical operators.

Μέχρι τώρα, όλος ο Python κώδικας που γράφαμε, έτρεχε γραμμή προς γραμμή από πάνω προς τα κάτω. Πολλές φορές όμως χρειαζόμαστε να τρέξουμε ένα συγκεκριμένο γκρουπ γραμμών κώδικα ενώ ταυτόχρονα να παραβλέψουμε κάποιο άλλο σημείο του κώδικα. Αυτή την επιλογή εκτέλεσης συγκεκριμένου κώδικα, όσο και η ικανότητα το πρόγραμμα μας να αποφασίζει από μόνο του, μπορεί να προστεθεί στην λογική του προγράμματος μας αν χρησιμοποιήσουμε control statements και ποιο συγκεκριμένα if και elif statements. Ας δούμε ένα εύκολο παράδειγμα έτσι ώστε να μπορούμε να αναπτύξουμε την θεωρία μας καλύτερα.

App.py


x = 5
y = 10

if x < y:
    print("x is less than y")
   

Output


x is less than 
  

Κάθε if statement ξεκινάει με την λέξη κλειδί if και αμέσως μετά ακολουθεί μια συνθήκη. Εάν η συνθήκη είναι True (στο παράδειγμά μας είναι True γιατί το x είναι μικρότερο του y) τότε θα εκτελεστεί ο κώδικας που ανήκει στο if, ειδάλλως, εάν η συνθήκη είναι False τότε θα αγνοηθεί αυτό το μέρος του κώδικα. Όμως η ερώτηση που σίγουρα έχετε στο μυαλό σας είναι “πως αναγνωρίζουμε τον κώδικα που ανήκει στο if”?

Εδώ λοιπόν παίζει σημαντικό ρόλο το κενό που έχουμε αφήσει στην γραμμή του print( ) πριν ξεκινήσουμε να γράφουμε τον κώδικα. Συνήθως το κενό το δημιουργούμε με το tab έτσι ώστε αν γράψουμε πολλαπλές γραμμές κώδικα κάτω από το if να είναι όλες στοιχισμένες και να ξεχωρίζουν πολύ εύκολα και από τον προγραμματιστή αλλά και από τον compiler της Python. Εάν δεν αφήσετε το κενό, τότε ο compiler της Python θα παραπονεθεί ότι δεν αναγνωρίζει την εντολή και το πρόγραμμα μας δεν θα εκτελεστεί. Επίσης, μην ξεχνάμε τα colons ( : ) μετά την συνθήκη που είναι μέρος του συντακτικού του if statement.

Ο κώδικας που μόλις είδαμε είναι η πιο απλή μορφή του if όπου είτε τρέχει ένα κομμάτι κώδικα είτε όχι. Συνήθως όμως επιθυμούμε το πρόγραμμα μας να πρέπει να επιλέξει ανάμεσα σε πολλαπλές επιλογές και τελικά να δώσει μια τελική ροή στην εκτέλεση του κώδικα. Αυτήν την δυνατότητα την αποκτάει το if προσθέτοντας την λέξη κλειδί else όπως δείχνει και το παρακάτω παράδειγμα.

App.py


first = int(input("Enter the first number: "))
second = int(input("Enter the second number: "))
if first>second:
    maximum = first
    minimum = second
else:
    maximum = second
    minimum = first
print("Maximum: ",maximum)
print("Minimum: ",minimum)
   

Output


Enter the first number: 10
Enter the second number: 20
Maximum:  20
Minimum:  10
    

Από τον παραπάνω κώδικα, περιμένουμε μια απάντηση από την σύγκριση που κάνει ο if-else συνδυασμός στα δεδομένα που του δώσαμε. Μπορούμε όμως να έχουμε και περισσότερες από μια επιλογές απλά προσθέτοντας πολλαπλά if else. Μάλιστα η Python μας επιτρέπει να γράφουμε αυτό τον συνδυασμό σαν elif για εξοικονόμηση κώδικα. Για άλλη μια φορά τονίζω το κενό που πρέπει να αφήνουμε πριν ξεκινήσει ο κώδικας κάτω από το αντίστοιχο if.

App.py


number = int(input("Enter the numeric grade: "))
if number > 89:
    letter = 'A'
elif number > 79:
    letter = 'B'
elif number > 69:
    letter = 'C'
else:
    letter = 'F'
print("The letter grade is", letter)
 

Output


Enter the numeric grade: 67
The letter grade is F
   

Στον παραπάνω κώδικα πρέπει να προσέξουμε την σημαντική χρήση του τελευταίου else. Σαν λογική, το πρόγραμμα μας δεν ενδιαφέρεται για όλους τους αριθμούς αλλά μόνο για εκείνους που είναι μεγαλύτεροι από τον αριθμό 69. Για οποιονδήποτε άλλο αριθμό μικρότερο του 69 θα αναθέτει το γράμμα F στην μεταβλητή letter. Με αυτό τον τρόπο δεν αφήνουμε το πρόγραμμα να μας ξεφύγει από την λογική που θέλουμε να υλοποιήσουμε αλλά ταυτόχρονα καλύπτουμε και όλες τις πιθανές περιπτώσεις αριθμών.

Πριν κλείσουμε αυτή την ενότητα θα ήθελα να αναφερθούμε σε δύο ακόμα σημεία του κώδικα. Το πρώτο είναι τα σύμβολα που χρησιμοποιούμε στην συνθήκη του if (ονομάζονται comparison operators) αλλά και η δυνατότητα να συνδυάσουμε μια ή και περισσότερες συνθήκες χρησιμοποιώντας Logical Operators.

Comparison operators ονομάζονται εκείνα τα σύμβολα που μας επιτρέπουν να κάνουμε συγκρίσεις όπως εάν ένας αριθμός είναι μεγαλύτερος από έναν άλλο ή ένας χαρακτήρας είναι αδιάφορος (όχι ίσος) από έναν άλλο.

Δωρεάν Μαθήματα και Σεμινάρια PYTHON

Προσέξτε τον comparison operators όταν συγκρίνουμε για ισότητα σε μια συνθήκη. Χρησιμοποιούμε διπλό σύμβολο ίσον ( == ) για την ισότητα γιατί εδώ ψάχνουμε αλγεβρική ισότητα, ενώ το μόνο σύμβολο ( = ) όπως το χρησιμοποιούμε στις μεταβλητές σημαίνει ανάθεση τιμής στην μεταβλητή.

App.py


ans = int( input("What is 5 + 5? ") )
if ans == 10:
    print("You got it right!")
   

Output


What is 5 + 5? 10
You got it right!
   

Το δεύτερο σημείο στο οποίο πρέπει να αναφερθούμε είπαμε ότι είναι οι logical operators. Με τα logical operators μπορούμε να συνδυάσουμε περισσότερες από μια συνθήκη στα conditional statements.

Υπάρχουν τρία logical operators που μας διαθέτει η Python: and, or, not. Ας δούμε ένα παράδειγμα για το κάθε ένα logical operator για να δείτε πως ακριβώς μπορούν να χρησιμοποιηθούν. Σαν μια γρήγορη επεξήγηση, σε περίπτωση που δεν το γνωρίζετε, το and απαιτεί και οι δύο όροι του να είναι True για να επιστρέψει True, το or απλά ζητάει ένας από τους δύο όρους του τουλάχιστον να είναι True για να μας επιστρέψει True, και τέλος το not απλά αντιστρέφει την απάντηση πχ. από True σε False.

Στο παρακάτω παράδειγμα, θα πρέπει και οι δύο συνθήκες να είναι True για να εμφανιστεί το μήνυμα.

App.py


x, y, z = 5, 10, 5
if x < y and x == z:
    print("Both statements were true")
  

Output


Both statements were true
 

Στον παρακάτω κώδικα, ζητάμε μια από τις δύο συνθήκες τουλάχιστον να είναι True.

App.py


x, y, z = 5, 10, 5
if x < y or x != z:
    print("One or both statements were true")
  

Output


One or both statements were true
   

Εδώ ζητάμε την αντίστροφη κατάσταση από εκείνη στην οποία βρίσκεται η boolean μεταβλητή.

App.py


flag = False
if not flag:
    print("Flag is False")
    

Output


Flag is False
   

Ένας καταπληκτικός συνδυασμός που συνήθως βλέπουμε σε κώδικα και μας λύνει τα χέρια σε πάρα πολλές συνθήκες που θέλουμε να ελέγξουμε είναι οι membership operators in και not in. Όπως καταλαβαίνετε και από το όνομα, οι membership operators μας βοηθούν να ελέγξουμε εάν μια γραμματοσειρά ή ένας αριθμός ανήκουν σε μια μεγαλύτερη κατηγορία κειμένου ή ένα γκρουπ από αριθμούς.

App.py


word = "Baseball"
if "b" in word:
    print( f"{word } contains the character b")
  

Output


Baseball contains the character b
   

Ας δούμε λοιπόν ένα τελικό πρόγραμμα που περιέχει όλα όσα καλύψαμε στο σημερινό δωρεάν μάθημα Python. Στον κώδικα που ακολουθεί προσπαθούμε να γράψουμε σε Python την λογική μιας αίτησης για δάνειο. Αν ο ενδιαφερόμενος έχει μισθό μεγαλύτερο από 20000 ευρώ ταυτόχρονα είναι περισσότερα από δύο χρόνια στην ίδια εργασία τότε θα μπορεί να εγκριθεί για το δάνειο.

App.py


MIN_SALARY = 30000
MIN_YEARS = 2

salary = float(input('Enter your annual salary: '))
years_on_job = int(input('Enter the number of years employed: '))

if salary >= MIN_SALARY or years_on_job >= MIN_YEARS:
    print('You qualify for the loan.')
else:
    print('You do not qualify for this loan.')
   

Output


Enter your annual salary: 31000
Enter the number of years employed: 3
You qualify for the loan.
   

ΕΙΣΗΓΗΤΗΣ

Merry Jhonson

Μιχάλης Κασάπογλου

Ο Μιχάλης Κασάπογλου, είναι ένας από τους πιο έμπειρους τεχνικούς εκπαιδευτές στον χώρο του προγραμματισμού με πάνω από 20 χρόνια εμπειρία. Έχει εργαστεί σαν IT Operations Manager, Senior Programmer, και Training Team Leader ενώ κατέχει και αρκετές πιστοποιήσεις που καλύπτουν ένα μεγάλο φάσμα τεχνολογιών στο προγραμματισμό, σε βάσεις δεδομένων και cloud. Στον ελεύθερο του χρόνο διατηρεί ένα τεχνολογικό blog στο οποίο θα βρείτε αρκετά δωρεάν μαθήματα προγραμματισμού για αρχάριους.

loader