Cum să scrieți ramuri condiționate cu instrucțiuni if în Python

Afaceri

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

operatorrezultat
x < yadevărat dacă x este mai mic decât y
x <= yadevărat dacă x este mai mic sau egal cu y
x > yadevărat dacă x este mai mare decât y
x >= yadevărat dacă x este mai mare sau egal cu y
x == yadevărat dacă valorile x și y sunt egale
x != yadevărat dacă valorile x și y nu sunt egalex is yadevărat dacă x și y sunt același obiectx is not yadevărat dacă x și y nu sunt același obiectx in yadevărat dacă x este cuprins în yx not in yadevărat dacă x nu este conținut în 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:include
  • not 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.

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 yadevărat dacă atât x cât și y sunt adevărate
x or yadevărat dacă fie x, fie y este adevărat
not xfals 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.