Sąlyginis if sakinys Python. Sintaksė, else/elif blokai, pavyzdžiai

Mokantis programuoti dažnai tenka kurti programas, kurias pritaikyti realiame gyvenime nėra taip paprasta. Galų gale, laikas nuo laiko jūs turite laikytis nurodymų tik esant tam tikroms sąlygoms. Kad būtų galima tai įdiegti programoje, visos kalbos turi valdymo sakinius. Jų pagalba galite valdyti kodo vykdymo eigą, kurdami kilpas ar atlikdami tam tikrus veiksmus tik tada, kai tam tikra sąlyga yra teisinga.

Šiandien kalbėsime apie if teiginį, kuris patikrina esamą situaciją dėl tam tikros būklės ir pagal šią informaciją priima sprendimus dėl tolesnių veiksmų.

Kontrolės pareiškimų tipai

Apskritai, if nėra vienintelis teiginys, valdantis programos eigą. Taip pat jis pats gali būti didesnės operatorių grandinės komponentas.

Taip pat yra kilpų ir teiginių, kurie kontroliuoja jo vykdymo procesą. Šiandien kalbėsime tik apie sąlyginį operatorių ir grandines, kuriose jis gali dalyvauti.

Programavime yra toks dalykas kaip išsišakojimas. Būtent tai reiškia komandų seką, kuri vykdoma tik tuo atveju, jei tam tikra sąlyga yra teisinga. Patys kriterijai gali būti skirtingi:

  1. Kintamojo lygybė tam tikrai reikšmei.
  2. Konkretaus veiksmo atlikimas.
  3. Programos būsena (sutraukta ar ne).

Spektras gali būti daug didesnis. Sąlyginiai teiginiai būna kelių tipų:

  1. Su viena šaka. Tai yra, atliekamas vienas patikrinimas, dėl kurio atliekami tam tikri veiksmai.
  2. Su dviem ar daugiau šakų. Jei 1 kriterijus yra teisingas, patikrinkite 2 kriterijų. Jei jis teisingas, patikrinkite 3. Taigi atlikite tiek patikrinimų, kiek reikia.
  3. Su keliomis sąlygomis. Čia viskas paprasta. Vertėjas patikrina kelias sąlygas arba vieną iš jų.

jei teiginys

Jei sakinio struktūra yra panaši visomis kalbomis. Tačiau Python jos sintaksė šiek tiek skiriasi nuo visų kitų:

jei sąlyga:

    <входящее выражение 1>

    <входящее выражение 2>

<не входящее выражение>

Pirmiausia deklaruojamas pats operatorius, po kurio rašoma sąlyga, kuriai esant jis pradeda dirbti. Sąlyga gali būti teisinga arba klaidinga.

Po to seka blokas su komandomis. Jei ji iš karto eina po kriterijaus, kurį reikia įvykdyti, tada atitinkama komandų seka vadinama if bloku. Jame galite naudoti bet kokį skaičių komandų.

Dėmesio! Visų if blokų komandų įtrauka turi būti tokio pat dydžio. Bloko ribos nustatomos įtraukomis. 

Pagal kalbos dokumentaciją įtrauka yra 4 tarpai. 

Kaip veikia šis operatorius? Kai vertėjas pamato žodį if, jis iš karto patikrina išraišką pagal vartotojo nurodytus kriterijus. Jei taip yra, tada jis pradeda ieškoti nurodymų ir jų laikytis. Kitu atveju visos komandos iš šio bloko praleidžiamos.

Jei teiginys po sąlygos neįtrauktas, jis nėra traktuojamas kaip „if“ blokas. Mūsų situacijoje ši linija yra . Todėl, nepaisant patikrinimo rezultato, ši eilutė bus vykdoma.

Pateikiame kodo fragmentą, rodantį, kaip šis operatorius veikia.

skaičius = int(input(“Įveskite skaičių: “))

jei skaičius > 10:

    spausdinti („Skaičius didesnis nei 10“)

Ši programa paprašo vartotojo įvesti skaičių ir patikrina, ar jis didesnis nei 10. Jei taip, ji grąžina atitinkamą informaciją. Pavyzdžiui, jei vartotojas įveda skaičių 5, programa tiesiog baigsis, ir viskas.

Bet jei nurodysite skaičių 100, vertėjas supras, kad tai daugiau nei dešimt, ir praneš.

Dėmesio! Mūsų atveju, jei sąlyga klaidinga, programa sustoja, nes po nurodymo komandos neduodamos.

Aukščiau pateiktame kode yra tik viena komanda. Tačiau jų yra daug daugiau. Vienintelis reikalavimas yra įtrauka.

Dabar panagrinėkime šią komandų seką.

skaičius = int(input(“Parašykite skaičių: “))

jei skaičius > 10:

    spausdinti („pirma eilutė“)

    spausdinti („antra eilutė“)

    spausdinti („trečia eilutė“)

print („Eilutė, kuri vykdoma, neatsižvelgiant į įvestą skaičių“)

spausdinti („Baigti paraišką“)

Pabandykite atspėti, kokia bus išvestis, jei įvesite reikšmes 2, 5, 10, 15, 50.

Kaip matote, jei vartotojo įvestas skaičius yra didesnis nei dešimt, tada išvedamos trys eilutės + viena su tekstu „Vykdyti kiekvieną kartą ...“ ir viena „Pabaiga“, o jei mažiau nei dešimt, tada tik viena, su kitoks tekstas. Jei teisinga, bus vykdomos tik 3,4,5, XNUMX, XNUMX eilutės. Tačiau paskutinės dvi eilutės bus parašytos nepriklausomai nuo vartotojo nurodyto skaičiaus.

Jei teiginius naudosite tiesiai konsolėje, rezultatas bus kitoks. Vertėjas iš karto įjungia kelių eilučių režimą, jei, nurodęs patikrinimo kriterijų, paspaudžia Enter.

Tarkime, kad parašėme tokią komandų seką.

>>>

>>> n = 100

>>> jei n > 10:

...

Po to pamatysime, kad >>> buvo pakeista elipsė. Tai reiškia, kad įjungtas kelių eilučių įvesties režimas. Paprastais žodžiais tariant, jei paspausite Enter, būsite perkelti į antrojo instrukcijos etapo įvestį. 

Ir norint išeiti iš šio bloko, prie bloko reikia pridėti dar vieną konstrukciją if.

>>>

>>> n = 100

>>> jei n > 10:

… spausdinti («nv 10»)

...

Jei sąlyga neteisinga, programa baigiasi. Tai yra problema, nes vartotojas gali suvokti, kad tokia programa buvo uždaryta dėl gedimo. Todėl būtina pateikti grįžtamąjį ryšį vartotojui. Tam naudojama nuoroda jei-dar.

išraiškos operatorius jei-dar

Šis operatorius leidžia įdiegti nuorodą: jei išraiška atitinka tam tikrą taisyklę, atlikite šiuos veiksmus, o jei ne, tada kitus. Tai yra, tai leidžia padalyti programos srautą į du kelius. Sintaksė yra intuityvi:

jei sąlyga:

    # jei blokuoti

    1 teiginys

    2 teiginys

    ir taip toliau

Kitas:

    Dar # blokas

    3 teiginys

    4 teiginys

    ir taip toliau:

Paaiškinkime, kaip veikia šis operatorius. Pirma, gijoje vykdomas standartinis sakinys kukmedis, patikrinti, ar jis atitinka būklė "tiesa ar melas". Tolesni veiksmai priklauso nuo patikrinimo rezultatų. Jei tiesa, instrukcija, esanti instrukcijų sekoje po sąlygos, vykdoma tiesiogiai. kukmedis, jei tai klaidinga, tada kitas

Tokiu būdu galite tvarkyti klaidas. Pavyzdžiui, vartotojas turi įvesti spindulį. Akivaizdu, kad tai gali būti tik skaičius su pliuso ženklu arba nulinė reikšmė. Jei jis mažesnis nei 0, turite išsiųsti pranešimą, kuriame prašoma įvesti teigiamą skaičių. 

Štai kodas, kuris įgyvendina šią užduotį. Tačiau čia yra viena klaida. Pabandykite atspėti, kuris iš jų. 

spindulys = int(input(“Įveskite spindulį: “))

jei spindulys >= 0:

    spausdinti ("Apskritimas = ", 2 * 3.14 * spindulys)

    print("Plotas = ", 3.14 * spindulys ** 2)

    Kitas:

        spausdinti („Įveskite teigiamą skaičių“)

Įtraukos neatitikimo klaida. Jei ir dar turi būti be jų arba su tuo pačiu jų skaičiumi (priklausomai nuo to, ar jie įdėti, ar ne).

Pateikime kitą naudojimo atvejį (kur su operatorių derinimu viskas bus teisingai) – programos elementą, kuris tikrina slaptažodį.

slaptažodis = įvestis („Įveskite slaptažodį:“)

jei slaptažodis == «sshh»:

    spausdinti („Sveiki atvykę“)

Kitas:

    spausdinti („Prieiga uždrausta“)

Ši instrukcija praleidžia asmenį toliau, jei slaptažodis yra sshh. Jei yra bet koks kitas raidžių ir skaičių derinys, rodomas pranešimas „Prieiga uždrausta“.

teiginys-išraiška jei-elif-kitas

Tik jei kelios sąlygos nėra teisingos, vykdomas bloke esantis teiginys. kitas. Ši išraiška veikia taip.

jei sąlyga_1:

    # jei blokuoti

    pareiškimas

    pareiškimas

    daugiau pareiškimo

elif sąlyga_2:

    # pirmasis elifinis blokas

    pareiškimas

    pareiškimas

    daugiau pareiškimo

elif sąlyga_3:

    # antrasis elifinis blokas

    pareiškimas

    pareiškimas

    daugiau pareiškimo

...

kitas

    pareiškimas

    pareiškimas

    daugiau pareiškimo

Galite nurodyti daugybę papildomų sąlygų.

Įdėtos teiginiai

Kitas būdas įgyvendinti kelias sąlygas yra įterpti papildomų sąlygų patikrų į if bloką.

operatorius if kito būklės bloko viduje

gre_score = int(input("Įveskite dabartinį kredito limitą")

per_grad = int(input(“Įveskite savo kredito reitingą: “))

jei per_grad > 70:

    # išorinis jei blokas

        jei gre_score > 150:

            # vidinis jei blokas

    spausdinti („Sveikiname, gavote paskolą“)

Kitas:

    spausdinti („Atsiprašome, jūs negalite gauti paskolos“)

Ši programa atlieka kredito reitingo patikrinimą. Jei jis mažesnis nei 70, programa praneša, kad vartotojas negali gauti kredito. Jei jis didesnis, atliekamas antras patikrinimas, ar esamas kredito limitas yra didesnis nei 150. Jei taip, tada rodomas pranešimas, kad paskola išduota.

Jei abi reikšmės yra klaidingos, rodomas pranešimas, kad vartotojas neturi galimybės gauti paskolos. 

Dabar šiek tiek pakeiskime tą programą.

gre_score = int(input(“Įveskite dabartinę ribą: “))

per_grad = int(input(“Įveskite kredito balą: “))

jei per_grad > 70:

    jei gre_score > 150:

        spausdinti („Sveikiname, gavote paskolą“)

    Kitas:

        spausdinti („Jūsų kredito limitas mažas“)

Kitas:

    spausdinti („Atsiprašome, jūs negalite gauti kredito“)

Pats kodas labai panašus, bet įdėtas if taip pat pateikia algoritmą tuo atveju, jei iš jos pateikta sąlyga pasirodytų klaidinga. Tai yra, kortelės limitas yra nepakankamas, bet kredito istorija gera, rodomas pranešimas „Jūs turite žemą kredito reitingą“.

if-else teiginys sąlygos viduje kitas

Sukurkime kitą programą, kuri nustato mokinio pažymį pagal testų rezultatus.

rezultatas = int(input("Įveskite savo balą: "))

jei rezultatas >= 90:

    spausdinti („Puiku! Jūsų pažymys A“)

Kitas:

    jei rezultatas >= 80:

spausdinti („Puiku! Jūsų pažymys B“)

    Kitas:

jei rezultatas >= 70:

    spausdinti („Gerai! Jūsų pažymys C“)

Kitas:

    jei rezultatas >= 60:

spausdinti („Jūsų pažymys yra D. Verta pakartoti medžiagą“.)

    Kitas:

spausdinti („Jūs neišlaikėte egzamino“)

Programa pirmiausia patikrina, ar balas yra didesnis arba lygus 90. Jei taip, ji grąžina A pažymį. Jei ši sąlyga klaidinga, atliekami tolesni patikrinimai. Matome, kad iš pirmo žvilgsnio algoritmas beveik toks pat. Taigi, užuot tikrinę viduje kitas geriau naudoti derinį jei-elifas-kitas.

Taigi operatorius if atlieka labai svarbią funkciją – užtikrina, kad tam tikros kodo dalys būtų vykdomos tik esant poreikiui. Neįmanoma įsivaizduoti programavimo be jo, nes net ir paprasčiausiems algoritmams reikalingos šakės kaip „jei eini į kairę, tai rasi, o jei eisi į dešinę, tai reikia padaryti tą ir aną“.

Palikti atsakymą