Ako písať podmienené vetvy pomocou príkazov if v jazyku Python

obchodné

Vysvetlite podmienené vetvenie pomocou príkazov if v jazyku Python.

  • Základy príkazov if (if, elif, else)
  • Zadávanie podmienok pomocou operátorov porovnávania atď.
  • Zadajte podmienky podľa čísla, zoznamu atď.
  • Zadávanie viacerých podmienok alebo negácií pomocou logických operátorov (a, alebo, nie)
  • Podmienené výrazy na nových riadkoch a viacerých riadkoch

Existuje aj ternárny operátor, ktorý opisuje podmienenú vetvu v jednom riadku. Pozri nasledujúci článok.

Základy príkazov if (if, elif, else)

Základný tvar príkazu if je nasledovný

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“ zodpovedá „else if“ v jazyku C a iných jazykoch a môže existovať ľubovoľný počet „elif“.

Ak existuje len jeden podmienený výraz alebo nie je potrebné spracovanie, keď false, bloky „elif“ a „else“ možno vynechať.

Zadávanie podmienok pomocou operátorov porovnávania atď.

Zadajte podmienku pomocou operácie, ktorá vracia typ bool (true, false), napríklad operátor porovnania.

Operátory porovnávania v jazyku Python sú tieto

operátorvýsledok
x < ytrue, ak x je menšie ako y
x <= ytrue, ak x je menšie alebo rovné y
x > ytrue, ak x je väčšie ako y
x >= ytrue, ak x je väčšie alebo rovné y
x == ytrue, ak sú hodnoty x a y rovnaké
x != ytrue, ak sa hodnoty x a y nerovnajúx is ytrue, ak x a y sú rovnaký objektx is not ytrue, ak x a y nie sú ten istý objektx in ytrue, ak je x obsiahnuté v yx not in ytrue, ak x nie je obsiahnuté v y

Príklad. Pre pohodlie je definovaný ako funkcia s príkazom 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

Nasledujúce príkazy možno zapísať spôsobom, ktorý je pre Python jedinečný. Podrobnosti nájdete v nasledujúcom článku.
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
  • ==
  • !=

Vyššie uvedené je porovnanie hodnôt; na porovnanie identít objektov použite nasledujúce

  • is
  • is not

Napríklad pri porovnávaní celého čísla a čísla s pohyblivou rádovou čiarkou funkcia „==“ vráti true, ak sú hodnoty ekvivalentné, ale funkcia „is“ vráti false, pretože ide o rôzne objekty.

i = 10
print(type(i))
# <class 'int'>

f = 10.0
print(type(f))
# <class 'float'>

print(i == f)
# True

print(i is f)
# False

Taktiež je možné vytvoriť podmienku, či zoznam alebo reťazec obsahuje konkrétny prvok (znak).

  • in:zahŕňajú .
  • not in:bez
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

Zadajte podmienky podľa čísla, zoznamu atď.

Podmieneným výrazom príkazu if môže byť číslo, zoznam alebo iný objekt, ktorý nie je typu bool (true, false).

if 10:
    print('True')
# True

if [0, 1, 2]:
    print('True')
# True

V podmienenom výraze príkazu if jazyka Python sa nasledujúce objekty považujú za nepravdivé.

Čísla reprezentujúce nulu, prázdne reťazce, zoznamy atď. sa považujú za false; všetky ostatné sa považujú za true.

Ako je objekt posudzovaný, možno skontrolovať pomocou funkcie bool().

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

To možno použiť napríklad na jednoduchý zápis procesu, keď je zoznam prázdny.

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

Všimnite si, že reťazec „False“ bude tiež pravdivý, pretože ako je uvedené v príklade vyššie, každý reťazec, ktorý nie je v reťazci prázdny, bude pravdivý. Ak chcete previesť konkrétny reťazec, napríklad 'True' alebo 'False', na 1,0, použite funkciu strtobool() v module distutils.util.

Zadávanie viacerých podmienok alebo negácií pomocou logických operátorov (a, alebo, nie)

Logické operátory (a, alebo, nie) možno použiť na spracovanie logickej konjunkcie, logickej disjunkcie a negácie viacerých podmienok.

operátor(Výsledok (v podmienenom výraze príkazu if)
x and ytrue, ak sú x aj y pravdivé
x or ytrue, ak je pravdivé x alebo y
not xfalse, ak x je true, true, ak x je false
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

V skutočnosti príkazy „x a y“ a „x alebo y“ nevracajú True alebo False, ale buď x alebo y. Pokiaľ sa používajú v podmienených výrazoch v príkazoch if, netreba sa nimi zaoberať, pretože sa vyhodnotia ako True alebo False. Podrobnosti nájdete v nasledujúcom článku.

Je možné použiť a a alebo viac ako raz.

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

Podmienené výrazy na nových riadkoch a viacerých riadkoch

Ak sa používa viacero podmienených výrazov spojením „a“ alebo „alebo“ a každý riadok je dlhý, niekedy je potrebné podmienený výraz rozdeliť a napísať ho na viac riadkov.

Zlom riadku možno vytvoriť pomocou spätného lomítka alebo uzavretím celého riadku do zátvoriek.

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

Spätné lomítko môžete použiť na prerušenie riadku toľkokrát, koľkokrát chcete. Podobne môžete riadok ľubovoľný početkrát zalomiť v zátvorkách. Odsadenie nie je obmedzené.

Všimnite si, že túto techniku môžete použiť kdekoľvek v kóde Pythonu, nielen v príkazoch if.