Pogojni stavek if v Pythonu. Sintaksa, bloki else/elif, primeri

V procesu učenja programiranja je pogosto treba ustvariti programe, ki jih ni tako enostavno uporabiti v resničnem življenju. Navsezadnje morate od časa do časa slediti navodilom le pod določenimi pogoji. Da bi to lahko implementirali v program, imajo vsi jeziki nadzorne stavke. Z njihovo pomočjo lahko nadzorujete potek izvajanja kode, ustvarjate zanke ali izvajate določena dejanja samo, ko je določen pogoj resničen.

Danes bomo govorili o stavku if, ki preveri trenutno stanje za določen pogoj in se na podlagi teh informacij odloči o nadaljnjih dejanjih.

Vrste kontrolnih izjav

Na splošno if ni edini stavek, ki nadzoruje potek programa. Pa tudi sam je lahko sestavni del večje verige operaterjev.

Obstajajo tudi zanke in izjave, ki nadzorujejo proces njegovega izvajanja. Danes bomo govorili le o pogojnem operaterju in verigah, v katerih lahko sodeluje.

V programiranju obstaja nekaj takega, kot je razvejanje. Ravno to pomeni zaporedje ukazov, ki se izvede samo, če je izpolnjen določen pogoj. Sama merila so lahko drugačna:

  1. Enakost spremenljivke določeni vrednosti.
  2. Izvajanje določenega dejanja.
  3. Stanje aplikacije (strnjena ali ne).

Spekter je lahko veliko večji. Pogojni stavki so na voljo v več vrstah:

  1. Z eno vejo. To pomeni, da se izvede en sam pregled, zaradi katerega se izvedejo določena dejanja.
  2. Z dvema ali več vejami. Če je 1. kriterij resničen, potem preverite 2. kriterij. Če je resničen, potem preverite 3. In tako izvedite toliko preverjanj, kot je potrebno.
  3. Z več pogoji. Tukaj je vse preprosto. Tolmač preveri več pogojev ali enega od njih.

če izjava

Struktura stavka if je podobna v vseh jezikih. Vendar je v Pythonu njegova sintaksa nekoliko drugačna od vseh ostalih:

če pogoj:

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

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

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

Najprej se deklarira sam operater, nato pa se zapiše pogoj, pod katerim začne delovati. Pogoj je lahko resničen ali napačen.

Sledi blok z ukazi. Če takoj sledi kriteriju, ki ga je treba izpolniti, potem se ustrezno zaporedje ukazov imenuje blok if. V njem lahko uporabite poljubno število ukazov.

Pozor! Zamik znotraj vseh ukazov bloka if mora biti enake velikosti. Meje blokov so določene z zamiki. 

Glede na jezikovno dokumentacijo je zamik 4 presledke. 

Kako deluje ta operater? Ko tolmač vidi besedo if, takoj preveri izraz glede na merila, ki jih določi uporabnik. Če je temu tako, potem začne iskati navodila in jih upoštevati. V nasprotnem primeru so vsi ukazi iz tega bloka preskočeni.

Če stavek za pogojem ni zamaknjen, se ne obravnava kot blok if. V naši situaciji je ta vrstica . Zato bo ta vrstica izvedena ne glede na rezultat preverjanja.

Tukaj je delček kode za primer delovanja tega operaterja.

število = int(vnos(“Vnesite številko: “))

če je število > 10:

    print("Število je večje od 10")

Ta program od uporabnika zahteva številko in preveri, ali je večja od 10. Če je, vrne ustrezne informacije. Na primer, če uporabnik vnese številko 5, potem se program preprosto zaključi in to je to.

Če pa navedete številko 100, bo tolmač razumel, da je več kot deset, in to poročal.

Pozor! V našem primeru, če je pogoj napačen, se program ustavi, ker po ukazu ni danih ukazov.

V zgornji kodi je samo en ukaz. Teh pa je veliko več. Edina zahteva je zamik.

Zdaj pa analizirajmo to zaporedje ukazov.

število = int(vhod(“Napišite številko: “))

če je število > 10:

    print(“prva vrstica”)

    print(“druga vrstica”)

    print("tretja vrstica")

print(“Vrstica, ki se izvede, ne glede na vneseno število”)

print(“Končaj aplikacijo”)

Poskusite uganiti, kakšen bo rezultat, če vnesete vrednosti 2, 5, 10, 15, 50.

Kot lahko vidite, če je številka, ki jo vnese uporabnik, večja od deset, se izpišejo tri vrstice + ena z besedilom »Zaženi vsakič ...« in ena »Konec«, in če je manjša od deset, potem samo ena, z drugačno besedilo. Če je true, bodo izvedene samo vrstice 3,4,5. Vendar pa bosta zadnji dve vrstici zapisani ne glede na to, katero številko določi uporabnik.

Če izjave uporabite neposredno v konzoli, bo rezultat drugačen. Tolmač takoj vklopi večvrstični način, če po določitvi merila preverjanja pritisnete Enter.

Recimo, da smo napisali naslednje zaporedje ukazov.

>>>

>>> n = 100

>>> če je n > 10:

...

Nato bomo videli, da je bil >>> nadomeščen s elipso. To pomeni, da je večvrstični način vnosa omogočen. Preprosto povedano, če pritisnete Enter, boste prestavljeni na vnos druge stopnje navodila. 

In če želite zapustiti ta blok, morate bloku dodati še eno konstrukcijo if.

>>>

>>> n = 100

>>> če je n > 10:

… print(«nv 10»)

...

Če pogoj ni resničen, se program konča. To je težava, saj lahko uporabnik zazna, da se je tak program zaprl zaradi napake. Zato je potrebno dati povratno informacijo uporabniku. Za to se uporablja povezava če potem.

izrazni operater če potem

Ta operator vam omogoča implementacijo povezave: če se izraz ujema z določenim pravilom, izvedite ta dejanja, če ne, pa druga. To pomeni, da vam omogoča, da tok programa razdelite na dve cesti. Sintaksa je intuitivna:

če pogoj:

    # if blok

    izjava 1

    izjava 2

    in tako naprej

drugo:

    # else blok

    izjava 3

    izjava 4

    in tako naprej:

Razložimo, kako deluje ta operater. Najprej se v niti izvede standardni stavek tisa, preverjanje, ali se ujema stanje "pravilno ali napačno". Nadaljnji ukrepi so odvisni od rezultatov preverjanja. Če je res, se navodilo, ki je v zaporedju navodil za pogojem, izvede neposredno. tisa, če je lažna, potem ostalo

Na ta način lahko obravnavate napake. Uporabnik mora na primer vnesti polmer. Očitno je lahko le številka z znakom plus ali pa ničelna vrednost. Če je manjše od 0, morate izdati sporočilo, v katerem morate vnesti pozitivno število. 

Tukaj je koda, ki izvaja to nalogo. Ampak tukaj je ena napaka. Poskusite uganiti katerega. 

radius = int(input(“Vnesite radij: “))

če je polmer >= 0:

    print(“Obseg = “, 2 * 3.14 * polmer)

    natisni (“Površina = “, 3.14 * polmer ** 2)

    drugo:

        print(“Prosimo, vnesite pozitivno število”)

Napaka neujemanja zamikov. Če in Drugače morajo biti nameščeni brez njih ali z enakim številom (odvisno od tega, ali so ugnezdeni ali ne).

Navedimo še en primer uporabe (kjer bo z operatersko poravnavo vse pravilno) – element aplikacije, ki preverja geslo.

geslo = vnos ("Vnesite geslo: ")

če je geslo == «sshh»:

    natisni ("Dobrodošli")

drugo:

    print(“Dostop zavrnjen”)

To navodilo dodatno preskoči osebo, če je geslo sshh. Če je katera koli druga kombinacija črk in številk, se prikaže sporočilo »Dostop zavrnjen«.

stavek-izraz if-elif-else

Samo če več pogojev ni izpolnjenih, se izvede stavek, ki je v bloku. ostalo. Ta izraz deluje takole.

če pogoj_1:

    # if blok

    Izjava

    Izjava

    več izjave

elif pogoj_2:

    # prvi blok elif

    Izjava

    Izjava

    več izjave

elif pogoj_3:

    # drugi blok elif

    Izjava

    Izjava

    več izjave

...

ostalo

    Izjava

    Izjava

    več izjave

Določite lahko poljubno število dodatnih pogojev.

Ugnezdeni stavki

Drug način za implementacijo več pogojev je vstavljanje dodatnih preverjanj pogojev v blok if.

Operater if znotraj drugega bloka pogojev

gre_score = int(input(“Vnesite svoj trenutni kreditni limit”))

per_grad = int(input(“Vnesite svojo bonitetno oceno: “))

če je per_grad > 70:

    # zunanji če blok

        če gre_score > 150:

            # notranji če blok

    print(“Čestitamo, prejeli ste posojilo”)

drugo:

    print(“Oprostite, niste upravičeni do posojila”)

Ta program izvaja preverjanje bonitete. Če je nižja od 70, program sporoči, da uporabnik ni upravičen do kredita. Če je večji, se izvede drugo preverjanje, ali je trenutni kreditni limit večji od 150. Če da, se prikaže sporočilo, da je bilo posojilo izdano.

Če sta obe vrednosti lažni, se izpiše sporočilo, da uporabnik nima možnosti pridobitve kredita. 

Zdaj pa malo predelajmo ta program.

gre_score = int(input(“Vnesite trenutno omejitev: “))

per_grad = int(input(“Vnesite kreditno oceno: “))

če je per_grad > 70:

    če gre_score > 150:

        print(“Čestitamo, prejeli ste posojilo”)

    drugo:

        print(“Vaš kreditni limit je nizek”)

drugo:

    print(“Oprostite, niste upravičeni do kredita”)

Sama koda je zelo podobna, vendar ugnezdena if ponuja tudi algoritem, če se pogoj iz nje izkaže za napačnega. To pomeni, da je limit na kartici nezadosten, vendar je kreditna zgodovina dobra, prikaže se sporočilo "Imate nizko bonitetno oceno".

stavek if-else znotraj pogoja ostalo

Naredimo še en program, ki študentu določa oceno na podlagi rezultatov testov.

score = int(input(“Vnesite svoj rezultat: “))

če je rezultat >= 90:

    print(“Super! Vaša ocena je A”)

drugo:

    če je rezultat >= 80:

print(“Super! Vaša ocena je B”)

    drugo:

če je rezultat >= 70:

    print(“Dobro! Vaša ocena je C”)

drugo:

    če je rezultat >= 60:

print(“Tvoja ocena je D. Splača se ponoviti snov.”)

    drugo:

print(“Padel si na izpitu”)

Aplikacija najprej preveri, ali je rezultat večji ali enak 90. ​​Če da, potem vrne oceno A. Če je ta pogoj napačen, se izvedejo nadaljnja preverjanja. Vidimo, da je algoritem na prvi pogled skoraj enak. Torej namesto preverjanja notri ostalo bolje uporabiti kombinacijo če-elif-drugo.

Torej operater if opravlja zelo pomembno funkcijo – poskrbi, da se določeni deli kode izvajajo le, če je to potrebno. Brez njega si je nemogoče predstavljati programiranje, saj tudi najpreprostejši algoritmi zahtevajo razcepe tipa "če greš na levo, ga boš našel, in če greš na desno, potem moraš narediti to in to."

Pustite Odgovori