PYTHON ΕΝΟΤΗΤΑ 9 – if/else Statements and Logical Operators

 


ΕΙΣΑΓΩΓΗ

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

If Statement

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

Ας ξεκινήσουμε πρώτα με την χρήση των if statements μέσα από ένα απλό παράδειγμα.

app.py


print('-------------------------------------------')
print('This program calculates the average goal')
print('-------------------------------------------')

PERFORMANCE = 1.5

game1 = int(input('Enter the number of goals for game 1: '))
game2 = int(input('Enter the number of goals for game 2: '))
game3 = int(input('Enter the number of goals for game 3: '))

average_goals = (game1 + game2 + game3) / 3
print("The average goal per game is", format(average_goals, ',.2f'))

if average_goals >= PERFORMANCE:
    print('Congratulations!')
    print('You are a great scorer!')

Output


-------------------------------------------
This program calculates the average goal
-------------------------------------------
Enter the number of goals for game 1: 1
Enter the number of goals for game 2: 3
Enter the number of goals for game 3: 1
The average goal per game is 1.67
Congratulations!
You are a great scorer!

Στο παραπάνω παράδειγμα ζητάμε από τον χρήστη να εισάγει τα γκολ που ένας παίχτης ποδοσφαίρου έχει βάλει σε κάθε έναν από τους τρεις τελευταίους αγώνες που έχει παίξει. Αφού διαβάσουμε τα δεδομένα και τα μετατρέψουμε σε integer με την χρήση του int( ) function, τότε εκτελούμε μια απλή πράξη για να βρούμε τον μέσο όρο των γκολ που έχει βάλει ο παίχτης και αμέσως μετά δείχνουμε στο terminal ποιος είναι ο αριθμός.

Αμέσως μετά ακολουθεί ένα if statement το οποίο αν είναι true (δηλαδή αν ο μέσος όρος είναι μεγαλύτερος ή ίσος από την τιμή της μεταβλητής PERFORMANCE) τότε θα προστεθούν ακόμα δύο μηνύματα στο τελικό αποτέλεσμα. Αν όμως η τιμή της συνθήκης δεν είναι true (δηλαδή η τιμή του average_goals είναι μικρότερη από το PERFORMANCE) τότε τα δύο print μηνύματα δεν θα εμφανιστούν στο terminal γιατί ο κώδικας που ακολουθεί το if δεν θα εκτελεστεί.

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

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

Δεν θα πρέπει να σας απασχολεί τόσο πολύ το γεγονός ότι θα πρέπει να προσέχετε για τα κενά που θα πρέπει να αφήνετε από την αρχή της γραμμής στα if statements, γιατί κάθε μοντέρνο IDE (όπως και το Visual Studio Code) όταν γράφετε ένα if statement μεταφέρει τον cursor στην επόμενη γραμμή στο σωστό διάστημα.

Comparison Operators

Τα σύμβολα που χρησιμοποιούμε για να ορίσουμε την συνθήκη του if ονομάζονται comparison operators. Αυτά τα σύμβολα μας επιτρέπουν να κάνουμε συγκρίσεις όπως εάν ένας αριθμός είναι μεγαλύτερος από έναν άλλο ή ένας χαρακτήρας είναι διαφορετικός από κάποιον άλλο.


Δωρεάν μαθήματα Python

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

app.py

print("Let's check your math skills")
ans = int(input("What is 5 + 5> "))

if ans == 10:
    print("You got it right!")

Output

Let's check your math skills
What is 5 + 5> 10
You got it right!

If-else Statement

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

app.py

print('-------------------------------------------')
print('This program calculates the average goal')
print('-------------------------------------------')

PERFORMANCE = 1.5

game1 = int(input('Enter the number of goals for game 1: '))
game2 = int(input('Enter the number of goals for game 2: '))
game3 = int(input('Enter the number of goals for game 3: '))

average_goals = (game1 + game2 + game3) / 3
print("The average goal per game is", format(average_goals, ',.2f'))

if average_goals >= PERFORMANCE:
    print('Congratulations!')
    print('You are a great scorer!')
else:
    print("You need to try harder next time")

Output


-------------------------------------------
This program calculates the average goal
-------------------------------------------
Enter the number of goals for game 1: 1
Enter the number of goals for game 2: 2
Enter the number of goals for game 3: 1
The average goal per game is 1.33
You need to try harder next time

Στον παραπάνω κώδικα, ζητάμε αναγκαστικά το πρόγραμμα να μας δώσει μια απάντηση με βάση την συνθήκη που του έχουμε ορίσει. Αν η συνθήκη δεν είναι true τότε θα εκτελεστεί ο κώδικας που ανήκει στο else. Με αυτό το τρόπο είτε η συνθήκη είναι true είτε false θα πάρουμε απάντηση από το πρόγραμμα μας.

elif Statements

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

app.py

print('-----------------------------------------')
print('-----------Final Exam Grade--------------')
print('-----------------------------------------')

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

Output

-----------------------------------------
-----------Final Exam Grade--------------
-----------------------------------------
Enter the score of your exam: 68
The letter grade of your exam is F

Process finished with exit code 0

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

Conditional Operators

Με τα logical operators μπορούμε να συνδυάσουμε περισσότερες από μια συνθήκη στο if statement.

Δωρεάν μαθήματα Python

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

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

app.py

print('-----------------------------------')
print('------Logical Operators------------')
print('-----------------------------------')

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 and years_on_job >= MIN_YEARS:
    print('Congratulations! You are qualified for a load.')
else:
    print('You are not qualified for this loan')

Output

-----------------------------------
------Logical Operators------------
-----------------------------------
Enter your annual salary: 45000
Enter the number of years employed: 5
Congratulations! You are qualified for a load.

Ας αλλάξουμε το παραπάνω κώδικα και αντί για and ας χρησιμοποιήσουμε or. Για να εγκριθεί το δάνειο θα πρέπει είτε ο πελάτης να έχει μισθό μεγαλύτερο από 30000 ή να έχει προϋπηρεσία πάνω από 2 χρόνια.

app.py

print('-----------------------------------')
print('------Logical Operators------------')
print('-----------------------------------')

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('Congratulations! You are qualified for a load.')
else:
    print('You are not qualified for this loan')

Output

-----------------------------------
------Logical Operators------------
-----------------------------------
Enter your annual salary: 28000
Enter the number of years employed: 4
Congratulations! You are qualified for a load.

Όσο αφορά το not logical operator ας δούμε ένα παράδειγμα στο οποίο ζητάμε την αντίστροφη κατάσταση από εκείνη στην οποία βρίσκεται η Boolean συνθήκη.

app.py

print('-----------------------------------')
print('------Logical Operators------------')
print('-----------------------------------')

status = input("Are you unemployed?: Please type 'True' or 'False': ")

if not status == 'True':
    print('Congratulations! You qualify for the loan.')
else:
    print('You do not qualify for this loan')

Output

-----------------------------------
------Logical Operators------------
-----------------------------------
Are you unemployed?: Please type 'True' or 'False': False
Congratulations! You qualify for the loan.

Review Example

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

app.py

print('---------------------------------------')
print('-------Python Calculator---------------')
print('---------------------------------------')

operation = input("Would you like to add/subtract/multiply/divide? ").lower()

num1 = input("What is the first number? ")
num2 = input("What is the second number? ")
num1 = float(num1)
num2 = float(num2)

if operation == "add":
    result = num1 + num2
    print(f'The result of the addition is {result}')
elif operation == "subtract":
    result = num1 - num2
    print(f'The result of the subtraction is {result}')
elif operation == "multiply":
    result = num1 * num2
    print(f'The result of the multiplication is {result}')
elif operation == "divide":
    result = num1 / num2
    print(f"The result of the division is {format(result, ',.2f')}")
else:
    print(f"Sorry but I can not recognize this operation -> {operation}")

Output

---------------------------------------
-------Python Calculator---------------
---------------------------------------
Would you like to add/subtract/multiply/divide? divide
What is the first number? 7
What is the second number? 3
The result of the division is 2.33


Μην ξεχάσετε να κάνετε ένα μικρό donation έτσι ώστε αυτό το site να μεγαλώσει ακόμα πιο πολύ και να αποκτήσει περισσότερες δυνατότητες online παράδοσης δωρεάν μαθημάτων.

full-width

Post a Comment

0 Comments