Εξηγήστε τη διακλάδωση υπό όρους με εντολές if στην Python.
- Βασικά στοιχεία των δηλώσεων if (if, elif, else)
- Καθορίστε συνθήκες με τελεστές σύγκρισης κ.λπ.
- Καθορίστε τις συνθήκες με αριθμό, λίστα κ.λπ.
- Καθορίστε πολλαπλές συνθήκες ή αρνήσεις με λογικούς τελεστές (και, ή, όχι)
- Εκφράσεις υπό όρους σε νέες γραμμές και πολλαπλές γραμμές
Υπάρχει επίσης ένας τριμερής τελεστής που περιγράφει μια διακλάδωση υπό όρους σε μία γραμμή. Βλέπε το ακόλουθο άρθρο.
- ΣΧΕΤΙΚΑ:Γράφοντας δηλώσεις if σε μία γραμμή με τον τεταρτοβάθμιο τελεστή της Python (τελεστής υπό συνθήκη)
Βασικά στοιχεία των δηλώσεων if (if, elif, else)
Η βασική μορφή της εντολής if έχει ως εξής
if Conditional expression 1:
`Processing to be performed if Expression 1 is True.`
elif Conditional expression 2:
`Processing to be performed when expression 1 is false and expression 2 is true.`
elif Expression 3:
`Process when expression 1 and 2 are false and expression 3 is true.`
...
else:
`Processing when all conditionals are false.`
Το «elif» αντιστοιχεί στο «else if» στη C και σε άλλες γλώσσες, και μπορεί να υπάρχει οποιοσδήποτε αριθμός «elifs».
Εάν υπάρχει μόνο μία υπό συνθήκη έκφραση ή δεν είναι απαραίτητη η επεξεργασία όταν είναι ψευδής, τα μπλοκ «elif» και «else» μπορούν να παραλειφθούν.
Καθορίστε συνθήκες με τελεστές σύγκρισης κ.λπ.
Καθορίστε τη συνθήκη με μια λειτουργία που επιστρέφει έναν τύπο bool (true, false), όπως ένας τελεστής σύγκρισης.
Οι τελεστές σύγκρισης της Python είναι οι εξής
χειριστής | αποτέλεσμα |
---|---|
x < y | true αν το x είναι μικρότερο από το y |
x <= y | true αν το x είναι μικρότερο ή ίσο του y |
x > y | true αν το x είναι μεγαλύτερο από το y |
x >= y | true αν το x είναι μεγαλύτερο ή ίσο του y |
x == y | true αν οι τιμές x και y είναι ίσες |
x != y
x is y
x is not y
x in y
x not in y
Παράδειγμα. Για λόγους ευκολίας, ορίζεται ως συνάρτηση με τη δήλωση def.
def if_test(num):
if num > 100:
print('100 < num')
elif num > 50:
print('50 < num <= 100')
elif num > 0:
print('0 < num <= 50')
elif num == 0:
print('num == 0')
else:
print('num < 0')
if_test(1000)
# 100 < num
if_test(70)
# 50 < num <= 100
if_test(0)
# num == 0
if_test(-100)
# num < 0
Τα παρακάτω μπορούν να γραφτούν με έναν τρόπο που είναι μοναδικός για την Python. Ανατρέξτε στο ακόλουθο άρθρο για λεπτομέρειες.a < x < b
def if_test2(num):
if 50 < num < 100:
print('50 < num < 100')
else:
print('num <= 50 or num >= 100')
if_test2(70)
# 50 < num < 100
if_test2(0)
# num <= 50 or num >= 100
==
!=
Για να συγκρίνετε ταυτότητες αντικειμένων, χρησιμοποιήστε τα εξής
is
is not
Για παράδειγμα, κατά τη σύγκριση ενός ακέραιου και ενός αριθμού κινητής υποδιαστολής, το «==» επιστρέφει true αν οι τιμές είναι ισοδύναμες, αλλά το «is» επιστρέφει false επειδή πρόκειται για διαφορετικά αντικείμενα.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
Είναι επίσης δυνατό να τεθεί η συνθήκη αν μια λίστα ή μια συμβολοσειρά περιέχει ένα συγκεκριμένο στοιχείο (χαρακτήρα).
in
:περιλαμβάνουνnot in
:χωρίς να συμπεριλαμβάνονται
def if_test_in(s):
if 'a' in s:
print('a is in string')
else:
print('a is NOT in string')
if_test_in('apple')
# a is in string
if_test_in('melon')
# a is NOT in string
Καθορίστε τις συνθήκες με αριθμό, λίστα κ.λπ.
Η υπό συνθήκη έκφραση μιας εντολής if μπορεί να είναι ένας αριθμός, μια λίστα ή ένα άλλο αντικείμενο που δεν είναι τύπου bool (true, false).
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
Στην υπό συνθήκη έκφραση μιας εντολής if της Python, τα ακόλουθα αντικείμενα θεωρούνται ψευδή.
- Σταθερές που ορίζονται ως ψευδείς:
None
,false
- Μηδέν σε αριθμητικό τύπο:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Κενή ακολουθία ή συλλογή:
''
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Οι αριθμοί που αντιπροσωπεύουν το μηδέν, οι κενές συμβολοσειρές, οι λίστες κ.λπ. θεωρούνται ψευδείς- όλοι οι άλλοι θεωρούνται αληθείς.
Ο τρόπος με τον οποίο κρίνεται το αντικείμενο μπορεί να ελεγχθεί με την bool().
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Αυτό μπορεί να χρησιμοποιηθεί για την απλή εγγραφή της διαδικασίας όταν η λίστα είναι κενή, για παράδειγμα.
def if_test_list(l):
if l:
print('list is NOT empty')
else:
print('list is empty')
if_test_list([0, 1, 2])
# list is NOT empty
if_test_list([])
# list is empty
Σημειώστε ότι η συμβολοσειρά 'False' θα είναι επίσης αληθής, διότι όπως φαίνεται στο παραπάνω παράδειγμα, κάθε συμβολοσειρά που δεν είναι κενή στη συμβολοσειρά θα είναι αληθής. Για να μετατρέψετε ένα συγκεκριμένο αλφαριθμητικό όπως το 'True' ή το 'False' σε 1,0, χρησιμοποιήστε την strtobool() στο module distutils.util.
Καθορίστε πολλαπλές συνθήκες ή αρνήσεις με λογικούς τελεστές (και, ή, όχι)
Οι λογικοί τελεστές (and, or, not) μπορούν να χρησιμοποιηθούν για τον χειρισμό της λογικής σύζευξης, της λογικής διάζευξης και της άρνησης πολλαπλών συνθηκών.
χειριστής | (Αποτέλεσμα (στην υπό συνθήκη έκφραση μιας δήλωσης if) |
---|---|
x and y | true αν και τα x και y είναι true |
x or y | αληθές αν είτε το x είτε το y είναι αληθές |
not x | ψευδές αν το x είναι αληθές, αληθές αν το x είναι ψευδές |
def if_test_and_not(num):
if num >= 0 and not num % 2 == 0:
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_not(5)
# num is positive odd
if_test_and_not(10)
# num is NOT positive odd
if_test_and_not(-10)
# num is NOT positive odd
Στην πραγματικότητα, τα «x και y» και «x ή y» δεν επιστρέφουν True ή False, αλλά είτε το x είτε το y. Εφόσον χρησιμοποιούνται σε εκφράσεις υπό συνθήκη σε εντολές if, δεν χρειάζεται να ανησυχείτε γι' αυτά, αφού αξιολογούνται είτε σε True είτε σε False. Ανατρέξτε στο ακόλουθο άρθρο για λεπτομέρειες.
Είναι δυνατή η χρήση των και και ή περισσότερες από μία φορές.
def if_test_and_not_or(num):
if num >= 0 and not num % 2 == 0 or num == -10:
print('num is positive odd or -10')
else:
print('num is NOT positive odd or -10')
if_test_and_not_or(5)
# num is positive odd or -10
if_test_and_not_or(10)
# num is NOT positive odd or -10
if_test_and_not_or(-10)
# num is positive odd or -10
Εκφράσεις υπό όρους σε νέες γραμμές και πολλαπλές γραμμές
Όταν χρησιμοποιούνται πολλαπλές εκφράσεις υπό συνθήκη συνδέοντάς τες με «και» ή «ή» και κάθε γραμμή γίνεται μεγάλη, είναι μερικές φορές απαραίτητο να σπάσετε την έκφραση υπό συνθήκη και να τη γράψετε σε πολλές γραμμές.
Μια διακοπή γραμμής μπορεί να γίνει με τη χρήση μιας ανάποδης κάθετης ή με το κλείσιμο ολόκληρης της γραμμής σε παρενθέσεις.
def if_test_and_backslash(num):
if num >= 0 \
and not num % 2 == 0:
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_backslash(5)
# num is positive odd
def if_test_and_brackets(num):
if (num >= 0
and not num % 2 == 0):
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_brackets(5)
# num is positive odd
Μπορείτε να χρησιμοποιήσετε μια backslash για να διακόψετε μια γραμμή όσες φορές θέλετε. Ομοίως, μπορείτε να διακόψετε μια γραμμή όσες φορές θέλετε μέσα σε παρενθέσεις. Δεν υπάρχει όριο εσοχής.
Σημειώστε ότι αυτή είναι μια τεχνική που μπορεί να χρησιμοποιηθεί οπουδήποτε στον κώδικα της Python, όχι μόνο σε δηλώσεις if.