Πώς να γράψετε υπό όρους διακλαδώσεις με δηλώσεις if στην Python

Επιχείρηση

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

  • Βασικά στοιχεία των δηλώσεων if (if, elif, else)
  • Καθορίστε συνθήκες με τελεστές σύγκρισης κ.λπ.
  • Καθορίστε τις συνθήκες με αριθμό, λίστα κ.λπ.
  • Καθορίστε πολλαπλές συνθήκες ή αρνήσεις με λογικούς τελεστές (και, ή, όχι)
  • Εκφράσεις υπό όρους σε νέες γραμμές και πολλαπλές γραμμές

Υπάρχει επίσης ένας τριμερής τελεστής που περιγράφει μια διακλάδωση υπό όρους σε μία γραμμή. Βλέπε το ακόλουθο άρθρο.

Βασικά στοιχεία των δηλώσεων 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 < ytrue αν το x είναι μικρότερο από το y
x <= ytrue αν το x είναι μικρότερο ή ίσο του y
x > ytrue αν το x είναι μεγαλύτερο από το y
x >= ytrue αν το x είναι μεγαλύτερο ή ίσο του y
x == ytrue αν οι τιμές x και y είναι ίσες
x != ytrue αν οι τιμές x και y δεν είναι ίσεςx is ytrue αν τα x και y είναι το ίδιο αντικείμενοx is not ytrue αν τα x και y δεν είναι το ίδιο αντικείμενοx in ytrue αν το x περιέχεται στο yx not in ytrue αν το x δεν περιέχεται στο 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, τα ακόλουθα αντικείμενα θεωρούνται ψευδή.

Οι αριθμοί που αντιπροσωπεύουν το μηδέν, οι κενές συμβολοσειρές, οι λίστες κ.λπ. θεωρούνται ψευδείς- όλοι οι άλλοι θεωρούνται αληθείς.

Ο τρόπος με τον οποίο κρίνεται το αντικείμενο μπορεί να ελεγχθεί με την 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 ytrue αν και τα 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.