Μπορούμε να γράψουμε μία λογική έκφραση η οποία θα είναι είτε αληθής είτε ψευδής. Μία συνηθισμένη λογική έκφραση είναι αυτή που ελέγχει αν μία ισότητα ή μία ανισότητα ισχύει ή όχι.
>>> x = 5 # assign a value to the variable x
>>> y = 7 # assign a value to the variable y
>>> x == y # check if x is equal to y
False
>>> x < y # check if x is smaller than y, etc
True
>>> x <= y
True
>>> x > y
False
>>> x >= y
False
>>> x != y # check if x is not equal to y
True
cond είναι μία λογική μεταβλητή (bool) και περιέχει το αποτέλεσμα μίας λογικής έκφρασης.
Η cond μπορεί να πάρει τις τιμές True ή False.
>>> cond = (x == y)
>>> cond
False
>>> type(cond)
<class 'bool'>
>>> year = 2018
>>> isleap = year%4 == 0
>>> print(isleap)
False
Σημείωση. η παραπάνω συνθήκη χρειάζεται βελτίωση για να είναι πλήρως σωστή (θα το δούμε παρακάτω).
if)
Η εντολή if ακολουθείται από μία λογική έκφραση και το σύμβολο : (άνω-κάτω τελεία).
Εάν η λογική έκφραση είναι True τότε εκτελούνται όλες οι εντολές
οι οποίες ακολουθούν την if και βρίσκονται σε μία εσοχή ως προς την if.
x = 5
if x>0:
print("x is positive")
print("x =",x)
if (και γενικότερα στην python). Όλες οι εντολές που ακολουθούν την if και εξαρτώνται από αυτήν
ξεκινούν από την ίδια ακριβώς στήλη (είναι ευθυγραμμισμένες στα αριστερά).
a == 1
if a = 1:
print('a is one')
if - else:
Εάν η λογική έκφραση η οποία ακολουθεί την if έχει τιμή False τότε δεν εκτελούνται οι εντολές που ακολουθούν (εντός της εσοχής) την if.
Έχουμε όμως τη δυνατότητα να εκτελέσουμε εντολές στην περίπτωση εκείνη στην οποία η έκφραση που ακολουθεί την if έχει τιμή False.
Για τον σκοπό αυτό βάζουμε, μετά την if, την νέα εντολή else και ακολουθούν (εντός εσοχής) όποιες εντολές θέλουμε.
>>> x = 5
>>> if x%2==0:
print(x,'is even')
else:
print(x,'is odd')
Για τις εντολές if - else η γενική μορφή της σύνταξης είναι
if expression:
statements_true
else:
statements_false
Εδώ, expression δηλώνει οποιαδήποτε έκφραση η οποία η τιμή της οποίας είναι True ή False,
ενώ statements_true και statements_false δηλώνουν μία ή περισσότερες εντολές Python. Παρατηρήστε την άνω και κάτω τελεία που ακολουθεί τόσο την έκφραση expression όσο και τη λέξη else. Προσέξτε και πάλι ότι οι εντολές statements_true και statements_fals είναι τοποθετημένες σε μια εσοχή προς τα δεξιά.
if - elif - else:
Είναι δυνατόν να μην ισχύει ούτε η έκφραση μετά το if ούτε η έκφραση μετά το elif.
Τότε μπορούμε να προσθέσουμε την εντολή else και να εκτελεστεί ο κώδικας τον οποίο θα γράψουμε κάτω από αυτήν.
x = int(input("Give an integer: "))
y = int(input("Give an integer: "))
if x>y:
print(x,'is greater than',y)
elif x<y:
print(x,'is less than',y)
else:
print(x,'and',y,'are equal')
>>> year = 2018
>>> isleap = year%4 == 0
>>> if isleap:
print("Year",year,"is leap year")
else:
print("Year",year,"is not leap year")
x = int(input("Give a value for number x: "))
y = int(input("Give a value for number y: "))
print("Calculation options:")
print("1) x + y")
print("2) x * y")
print("3) x ^ y")
choice = int(input("Please make a choice by entering the number: "))
if choice == 1:
print("x + y =", x+y)
elif choice == 2:
print("x * y =", x*y)
elif choice == 3:
print("x ^ y =", x**y)
else:
print("Invalid choice")
Μπορούμε να συνδυάσουμε λογικές μεταβλητές b, c. Οι τελεστές είναι οι ακόλουθοι (κατά σειρά χαμηλότερης προτεραιότητας).
or c (είναι αληθής εάν είτε η a είτε η b είναι αληθής)
and c (είναι αληθής εάν η a και η b είναι αληθής)
not
>>> 100%4 == 0 and 50%4 == 0
False
>>> len('Papadakis') > 10 and len('Papadopoulos') > 10
False
>>> len('Nikolopoulos') > 10 and len('Papadopoulos') > 10
True
>>> len('Papadakis') > 10 and len('Papadopoulos') > 10
False
>>> not (3 == 4)
True
>>> year = 2018
>>> isleap = (year%4 == 0) and (year%100 != 0)
>>> print(isleap)
Έχουμε χρησιμοποιήσει δύο λογικές εκφράσεις και τις έχουμε ενώσει με την λέξη and. Η λογική έκφραση που προκύπτει είναι αληθής μόνο στην περίπτωση που και οι δύο επιμέρους λογικές εκφράσεις είναι αληθείς.
>>> year = 2018
>>> isleap = (year%4 == 0) and (year%100 != 0) or (year%400 == 0)
>>> print(isleap)
Η παραπάνω εντολή if για τα δίσεκτα έτη είναι ισοδύναμη με την
>>> isleap = (year%4 == 0 and year%100 != 0) or (year%400 == 0)
>>> (True or True) and False
False
>>> True or (True and False)
True
>>> True or True and False
True
and, or) τότε είναι συχνά αρκετό να ελεγχθεί η τιμή μίας από αυτές ώστε να προσωρήσει το πρόγραμμα στο επόμενο βήμα.
Αυτό είναι κάτι που το εκμεταλλεύεται η python.
s δεν έχει χαρακτήρα με δείκτη 2.
s = "AB"
if s[2] == "C": #error, string index out of range
print("The third letter is C")
Ο ακόλουθος είναι σωστός κώδικας διότι το s[2] θα ελεγχθεί μόνο αν το sting περιέχει χαρακτήρα με δείκτη 2.
if len(s) > 2 and s[2] == "C":
print("The third letter is C")
Ο ακόλουθος δεν είναι σωστός κώδικας διότι το s[2] θα ελεγχθεί πριν εξασφαλισθεί ότι το sting περιέχει χαρακτήρα με δείκτη 2.
if s[2] == "C" and len(s) > 2: #error, string index out of range
print("The third letter is C")
Εντολές ελέγχου if-elif-else μπορούν να είναι μέρος
εντολών οι οποίες εκτελούνται υπό μία συνθήκη.
if x >= y:
if x >= z:
print('x is largest')
else:
print('z is largest')
else:
if y >= z:
print('y is largest')
else:
print('z is largest')
Μια κομψότερη, ίσως, λύση (η οποία μπορεί εύκολα να γενικευθεί σε μεγαλύτερο πλήθος αριθμών) είναι η ακόλουθη.
maxnum = x
if y > maxnum:
maxnum = y
if z > maxnum:
maxnum = z
print('largest number is', maxnum)