Μπορούμε να γράψουμε μία λογική έκφραση η οποία θα είναι είτε αληθής είτε ψευδής. Μία συνηθισμένη λογική έκφραση είναι αυτή που ελέγχει αν μία ισότητα ή μία ανισότητα ισχύει ή όχι.
>>> 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)