Hogyan írjunk feltételes ágakat if utasításokkal Pythonban?

Üzleti

Magyarázza el a feltételes elágazást if utasításokkal Pythonban.

  • Az if utasítások alapjai (if, elif, else)
  • Feltételek megadása összehasonlító operátorokkal stb.
  • Adja meg a feltételeket számmal, listával stb.
  • Több feltétel vagy tagadás megadása logikai operátorokkal (és, vagy, vagy, nem)
  • Feltételes kifejezések új sorokban és több sorban

Létezik egy terner operátor is, amely egy feltételes elágazást ír le egy sorban. Lásd a következő cikket.

Az if utasítások alapjai (if, elif, else)

Az if utasítás alapvető formája a következő

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.`

Az “elif” megfelel az “else if”-nek a C-ben és más nyelvekben, és tetszőleges számú “elif” lehet.

Ha csak egy feltételes kifejezés van, vagy ha nem szükséges a false feldolgozása, az “elif” és “else” blokkok elhagyhatók.

Feltételek megadása összehasonlító operátorokkal stb.

Adja meg a feltételt egy bool típusú (igaz, hamis) művelettel, például egy összehasonlító operátorral.

A Python összehasonlító operátorok a következők

üzemeltetőeredmény
x < yigaz, ha x kisebb, mint y
x <= ytrue ha x kisebb vagy egyenlő mint y
x > yigaz, ha x nagyobb, mint y
x >= ytrue ha x nagyobb vagy egyenlő mint y
x == ytrue, ha az x és y értékek megegyeznek
x != ytrue, ha az x és y értékek nem egyenlőekx is ytrue ha x és y ugyanaz az objektumx is not ytrue ha x és y nem ugyanaz az objektumx in yigaz, ha x benne van y-banx not in yigaz, ha x nem szerepel y-ban

Példa. Az egyszerűség kedvéért a def utasítással függvényként definiáljuk.

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

Az alábbiakat a Pythonban egyedülálló módon lehet leírni. A részletekért lásd a következő cikket.
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
  • ==
  • !=

A fentiekben értékeket hasonlítunk össze; az objektumok identitásának összehasonlításához használjuk a következőt

  • is
  • is not

Például egy egész szám és egy lebegőpontos szám összehasonlításakor az “==” igazat ad vissza, ha az értékek egyenértékűek, de az “is” hamisat ad vissza, mivel különböző objektumokról van szó.

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

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

print(i == f)
# True

print(i is f)
# False

Lehetőség van arra is, hogy feltételként megadjuk, hogy egy lista vagy egy karakterlánc tartalmaz-e egy adott elemet (karaktert).

  • in:tartalmazza a címet.
  • not in:ide nem értve
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

Adja meg a feltételeket számmal, listával stb.

Az if utasítás feltételes kifejezése lehet szám, lista vagy más objektum, amely nem bool (true, false) típusú.

if 10:
    print('True')
# True

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

A Python if utasítás feltételes kifejezésében a következő objektumok hamisnak tekinthetők.

A nullát, üres karakterláncokat, listákat stb. ábrázoló számok hamisnak, az összes többi igaznak minősül.

Az objektum megítélése a bool() segítségével ellenőrizhető.

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Ez például arra használható, hogy egyszerűen kiírja a folyamatot, ha a lista üres.

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

Vegyük észre, hogy a 'False' karakterlánc is igaz lesz, mert ahogy a fenti példában is látható, minden olyan karakterlánc, amely nem üres a karakterláncban, igaz lesz.”. Egy adott karakterlánc, például az 'True' vagy a 'False' 1,0-ra történő átalakításához használjuk a distutils.util modulban található strtobool() függvényt.

Több feltétel vagy tagadás megadása logikai operátorokkal (és, vagy, vagy, nem)

A logikai operátorok (and, or, not) a logikai konjunkció, a logikai diszjunkció és a több feltétel negációja kezelésére használhatók.

üzemeltető(Eredmény (egy if utasítás feltételes kifejezésében)
x and yigaz, ha x és y is igaz
x or yigaz, ha x vagy y igaz
not xhamis, ha x igaz, igaz, ha x hamis
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

Valójában az “x és y” és az “x vagy y” nem True vagy False, hanem vagy x vagy y. Amíg ezeket feltételes kifejezésekben használják az if utasításokban, nem kell aggódni miattuk, mivel vagy True vagy False értéket adnak. A részleteket lásd a következő cikkben.

Az és és vagy többször is használható.

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

Feltételes kifejezések új sorokban és több sorban

Ha több feltételes kifejezést használunk “és” vagy “vagy” kapcsolattal, és minden sor hosszú lesz, néha szükséges a feltételes kifejezést megszakítani és több sorba írni.

A sortörés történhet backslash használatával vagy az egész sor zárójelbe zárásával.

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

A backslash használatával annyiszor szakíthat meg egy sort, ahányszor csak akarja. Hasonlóképpen, a zárójeleken belül is tetszőleges számúszor megszakíthat egy sort. Nincs behúzási korlát.

Megjegyzendő, hogy ez a technika bárhol használható a Python kódban, nem csak az if utasításokban.

Copied title and URL