Explicați ramificarea condiționată cu ajutorul instrucțiunilor if în Python.
- Noțiuni de bază ale instrucțiunilor if (if, elif, else)
- Precizați condițiile cu operatori de comparație, etc.
- Precizați condițiile prin număr, listă etc.
- Specificați condiții multiple sau negații multiple cu operatori logici (and, or, not)
- Expresii condiționale pe linii noi și linii multiple
Există, de asemenea, un operator ternar care descrie o ramificare condiționată pe o singură linie. A se vedea următorul articol.
Noțiuni de bază ale instrucțiunilor if (if, elif, else)
Forma de bază a instrucțiunii if este următoarea
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” corespunde la „else if” în C și în alte limbaje și poate exista un număr nelimitat de „elif”.
În cazul în care există o singură expresie condițională sau dacă nu este necesară procesarea când este falsă, blocurile „elif” și „else” pot fi omise.
Precizați condițiile cu operatori de comparație, etc.
Specificați condiția cu o operație care returnează un tip bool (true, false), cum ar fi un operator de comparație.
Operatorii de comparație Python sunt următorii
operator | rezultat |
---|---|
x < y | adevărat dacă x este mai mic decât y |
x <= y | adevărat dacă x este mai mic sau egal cu y |
x > y | adevărat dacă x este mai mare decât y |
x >= y | adevărat dacă x este mai mare sau egal cu y |
x == y | adevărat dacă valorile x și y sunt egale |
x != y
x is y
x is not y
x in y
x not in y
Exemplu. Pentru comoditate, este definită ca o funcție cu instrucțiunea 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
Ceea ce urmează poate fi scris într-un mod care este unic pentru Python. Pentru detalii, consultați următorul articol.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
==
!=
Cele de mai sus reprezintă o comparație de valori; pentru a compara identități de obiecte, utilizați următoarele
is
is not
De exemplu, atunci când se compară un număr întreg și un număr în virgulă mobilă, „==” returnează adevărat dacă valorile sunt echivalente, dar „is” returnează fals deoarece sunt obiecte diferite.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
De asemenea, este posibil să se stabilească condiția dacă o listă sau un șir de caractere conține un anumit element (caracter).
in
:includenot in
:fără a include
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
Precizați condițiile prin număr, listă etc.
Expresia condițională a unei instrucțiuni if poate fi un număr, o listă sau un alt obiect care nu este de tip bool (true, false).
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
În expresia condițională a unei instrucțiuni if din Python, următoarele obiecte sunt considerate false.
- Constante definite ca fiind false:
None
,false
- Zero în tipul numeric:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Secvență sau colecție goală:
''
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Numerele care reprezintă zero, șirurile goale, listele etc. sunt considerate false; toate celelalte sunt considerate adevărate.
Modul în care este judecat obiectul poate fi verificat cu bool().
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Acest lucru poate fi utilizat pentru a scrie pur și simplu procesul atunci când lista este goală, de exemplu.
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
Rețineți că șirul „False” va fi, de asemenea, adevărat, deoarece, după cum se arată în exemplul de mai sus, orice șir care nu este gol în șir va fi adevărat. Pentru a converti un anumit șir de caractere, cum ar fi „True” sau „False” în 1,0, utilizați strtobool() din modulul distutils.util.
Specificați condiții multiple sau negații multiple cu operatori logici (and, or, not)
Operatorii logici (and, or, not) pot fi utilizați pentru a gestiona conjuncția logică, disjuncția logică și negarea condițiilor multiple.
operator | (Rezultat (în expresia condițională a unei instrucțiuni if) |
---|---|
x and y | adevărat dacă atât x cât și y sunt adevărate |
x or y | adevărat dacă fie x, fie y este adevărat |
not x | fals dacă x este adevărat, adevărat dacă x este fals |
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
De fapt, „x și y” și „x sau y” nu returnează Adevărat sau Fals, ci fie x, fie y. Atâta timp cât sunt utilizate în expresii condiționale în cadrul instrucțiunilor if, nu trebuie să vă faceți griji în legătură cu acestea, deoarece se evaluează fie la Adevărat, fie la Fals. Pentru detalii, consultați următorul articol.
Este posibil să se utilizeze și și și sau de mai multe ori.
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
Expresii condiționale pe linii noi și linii multiple
Atunci când se utilizează mai multe expresii condiționale prin conectarea lor cu „și” sau „sau” și fiecare linie devine lungă, este uneori necesar să se întrerupă expresia condițională și să se scrie pe mai multe linii.
O întrerupere de linie poate fi făcută prin utilizarea unei backslash sau prin includerea întregii linii în paranteze.
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
Puteți utiliza o backslash pentru a întrerupe o linie de câte ori doriți. De asemenea, puteți întrerupe o linie de oricâte ori în cadrul parantezelor. Nu există o limită de indentare.
Rețineți că aceasta este o tehnică care poate fi utilizată oriunde în codul Python, nu doar în instrucțiunile if.