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átor | výsledok |
---|---|
x < y | true, ak x je menšie ako y |
x <= y | true, ak x je menšie alebo rovné y |
x > y | true, ak x je väčšie ako y |
x >= y | true, ak x je väčšie alebo rovné y |
x == y | true, ak sú hodnoty x a y rovnaké |
x != y
x is y
x is not y
x in y
x not in 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é.
- Konštanty definované ako false:
None
,false
- Nula v číselnom type:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Prázdna sekvencia alebo kolekcia:
''
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Čí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 y | true, ak sú x aj y pravdivé |
x or y | true, ak je pravdivé x alebo y |
not x | false, 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.
- SÚVISIACE:Logické operátory jazyka Python „and, or, not“ (logická konjunkcia, logická disjunkcia, negácia)
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.