Kuinka kirjoittaa ehdollisia haaroja if-lausekkeilla Pythonissa

liiketoiminta

Selitä ehdollinen haarautuminen if-lausekkeiden avulla Pythonissa.

  • if-lausekkeiden perusteet (if, elif, else)
  • Määritä ehtoja vertailuoperaattoreilla jne.
  • Määritä ehdot numeron, luettelon jne. mukaan.
  • Määritä useita ehtoja tai negaatioita loogisilla operaattoreilla (ja, tai, ei).
  • Ehdolliset lausekkeet uusilla riveillä ja useilla riveillä

On myös ternäärinen operaattori, joka kuvaa ehdollisen haaran yhdellä rivillä. Katso seuraava artikkeli.

if-lausekkeiden perusteet (if, elif, else)

if-lauseen perusmuoto on seuraava

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” vastaa ”else if” -merkkiä C:ssä ja muissa kielissä, ja ”elif”-merkkejä voi olla kuinka monta tahansa.

Jos ehdollisia lausekkeita on vain yksi tai käsittely silloin, kun false ei ole tarpeen, ”elif”- ja ”else”-lohkot voidaan jättää pois.

Määritä ehtoja vertailuoperaattoreilla jne.

Määritä ehto operaatiolla, joka palauttaa bool-tyypin (true, false), kuten vertailuoperaattorilla.

Python-vertailuoperaattorit ovat seuraavat

operaattoritulos
x < ytrue jos x on pienempi kuin y
x <= ytrue jos x on pienempi tai yhtä suuri kuin y
x > ytrue jos x on suurempi kuin y
x >= ytrue jos x on suurempi tai yhtä suuri kuin y
x == ytrue, jos x- ja y-arvot ovat samat
x != ytrue, jos x- ja y-arvot eivät ole samatx is ytrue jos x ja y ovat sama objektix is not ytrue jos x ja y eivät ole sama objekti.x in ytrue, jos x sisältyy y:henx not in ytrue, jos x ei sisälly y:hen

Esimerkki. Yksinkertaisuuden vuoksi se on määritelty funktioksi def-lauseella.

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

Seuraava voidaan kirjoittaa Pythonille ominaisella tavalla. Katso lisätietoja seuraavasta artikkelista.
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
  • ==
  • !=

Yllä oleva on arvojen vertailu; jos haluat verrata objektien identiteettejä, käytä seuraavia ohjeita

  • is
  • is not

Kun esimerkiksi verrataan kokonaislukua ja liukulukua, ”==” palauttaa totuuden, jos arvot vastaavat toisiaan, mutta ”is” palauttaa väärän, koska ne ovat eri objekteja.

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

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

print(i == f)
# True

print(i is f)
# False

On myös mahdollista asettaa ehto, sisältääkö lista tai merkkijono tietyn elementin (merkin).

  • in:sisällyttää
  • not in:lukuun ottamatta
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

Määritä ehdot numeron, luettelon jne. mukaan.

if-lauseen ehdollinen lauseke voi olla luku, lista tai muu objekti, joka ei ole tyyppiä bool (true, false).

if 10:
    print('True')
# True

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

Pythonin if-lauseen ehdollisessa lausekkeessa seuraavat kohteet katsotaan vääriksi.

Nollaa, tyhjiä merkkijonoja, luetteloita jne. edustavia numeroita pidetään väärinä, kaikkia muita pidetään totena.

Se, miten objekti arvioidaan, voidaan tarkistaa komennolla bool().

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Tätä voidaan käyttää esimerkiksi prosessin kirjoittamiseen, kun lista on tyhjä.

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

Huomaa, että merkkijono 'False' on myös tosi, koska kuten yllä olevassa esimerkissä on esitetty, mikä tahansa merkkijono, joka ei ole tyhjä merkkijonossa, on tosi.”. Jos haluat muuntaa tietyn merkkijonon, kuten 'True' tai 'False', arvoksi 1,0, käytä distutils.util-moduulin funktiota strtobool().

Määritä useita ehtoja tai negaatioita loogisilla operaattoreilla (ja, tai, ei).

Loogisia operaattoreita (and, or, not) voidaan käyttää loogisen konjunktion, loogisen disjunktion ja useiden ehtojen negaation käsittelyyn.

operaattori(Tulos (if-lauseen ehdollisessa lausekkeessa)
x and ytosi, jos sekä x että y ovat tosi
x or ytosi, jos joko x tai y on tosi
not xväärä, jos x on tosi, tosi, jos x on väärä.
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

Itse asiassa ”x ja y” ja ”x tai y” eivät palauta True tai False, vaan joko x tai y. Niin kauan kuin niitä käytetään ehdollisissa lausekkeissa if-lausekkeissa, niistä ei tarvitse olla huolissaan, koska niiden tulokseksi saadaan joko True tai False. Katso lisätietoja seuraavasta artikkelista.

On mahdollista käyttää ja ja tai useammin kuin kerran.

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

Ehdolliset lausekkeet uusilla riveillä ja useilla riveillä

Kun käytetään useita ehdollisia lausekkeita liittämällä ne toisiinsa ”and”- tai ”or”-merkillä ja jokaisesta rivistä tulee pitkä, on joskus tarpeen katkaista ehdollinen lauseke ja kirjoittaa se useammalle riville.

Rivinvaihto voidaan tehdä käyttämällä vinoviivaa tai sulkemalla koko rivi sulkuihin.

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

Voit käyttää backslash-viivaa rivin katkaisemiseen niin monta kertaa kuin haluat. Samoin voit katkaista rivin kuinka monta kertaa tahansa sulkujen sisällä. Sisäänvetorajoitusta ei ole rajoitettu.

Huomaa, että tätä tekniikkaa voidaan käyttää missä tahansa Python-koodissa, ei vain if-lausekkeissa.

Copied title and URL