Uslovna if naredba u Pythonu. Sintaksa, else/elif blokovi, primjeri

U procesu učenja programiranja često je potrebno kreirati programe koje nije tako lako primijeniti u stvarnom životu. Uostalom, s vremena na vrijeme morate slijediti upute samo pod određenim uvjetima. Da biste to mogli implementirati u program, svi jezici imaju kontrolne izraze. Uz njihovu pomoć možete kontrolirati tok izvršavanja koda, kreirati petlje ili izvršavati određene radnje samo kada je određeni uvjet istinit.

Danas ćemo govoriti o if naredbi, koja provjerava trenutnu situaciju za određeno stanje i na osnovu tih informacija donosi odluke o daljim akcijama.

Vrste kontrolnih izjava

Općenito, if nije jedina izjava koja kontrolira tok programa. Kao i on sam može biti komponenta većeg lanca operatera.

Postoje i petlje i naredbe koje kontroliraju proces njegovog izvršavanja. Danas ćemo govoriti samo o uslovnom operatoru i lancima u kojima on može učestvovati.

U programiranju postoji nešto što je grananje. Upravo to znači niz naredbi koji se izvršava samo ako je određeni uvjet istinit. Sami kriterijumi mogu biti različiti:

  1. Jednakost varijable određenoj vrijednosti.
  2. Izvođenje određene radnje.
  3. Stanje aplikacije (sažeto ili ne).

Spektar može biti mnogo veći. Uslovni iskazi dolaze u nekoliko tipova:

  1. Sa jednom granom. Odnosno, vrši se jedna provjera, kao rezultat koje se izvode određene radnje.
  2. Sa dvije ili više grana. Ako je kriterijum 1 tačan, onda proverite kriterijum 2. Ako je tačan, onda proverite 3. I tako, izvršite onoliko provera koliko je potrebno.
  3. Uz nekoliko uslova. Ovdje je sve jednostavno. Tumač provjerava više uslova ili jedan od njih.

if izjava

Struktura if naredbe je slična u svim jezicima. Međutim, u Pythonu je njegova sintaksa donekle drugačija od svih ostalih:

ako stanje:

    <vehodâŝee vyraženie 1>

    <vehodâŝee vyraženie 2>

<ne vhodâŝee vyraženie>

Prvo se deklarira sam operator, nakon čega se upisuje uvjet pod kojim počinje s radom. Uslov može biti istinit ili netačan.

Nakon toga slijedi blok sa naredbama. Ako odmah slijedi kriterij koji treba ispuniti, tada se odgovarajući niz naredbi naziva if blokom. U njemu možete koristiti bilo koji broj komandi.

Pažnja! Uvlačenje unutar svih if blok komandi mora biti iste veličine. Granice bloka su određene uvlakama. 

Prema jezičkoj dokumentaciji, uvlačenje je 4 razmaka. 

Kako radi ovaj operater? Kada interpretator vidi riječ if, odmah provjerava izraz prema kriterijima koje je odredio korisnik. Ako je to slučaj, onda počinje tražiti upute i slijediti ih. U suprotnom, sve naredbe iz ovog bloka se preskaču.

Ako izraz nakon uvjeta nije uvučen, ne tretira se kao if blok. U našoj situaciji, ova linija jeste . Stoga, bez obzira na rezultat provjere, ova linija će biti izvršena.

Evo isječka koda za primjer kako ovaj operator radi.

broj = int(input(“Unesite broj: “))

ako je broj > 10:

    print(“Broj je veći od 10”)

Ovaj program traži od korisnika broj i provjerava da li je veći od 10. Ako jeste, vraća odgovarajuće informacije. Na primjer, ako korisnik unese broj 5, tada će se program jednostavno završiti i to je to.

Ali ako navedete broj 100, onda će tumač shvatiti da je više od deset i prijaviti ga.

Pažnja! U našem slučaju, ako je uslov netačan, program se zaustavlja, jer se nakon instrukcije ne daju naredbe.

U gornjem kodu postoji samo jedna komanda. Ali ima ih mnogo više. Jedini uslov je uvlačenje.

Sada analizirajmo ovaj niz naredbi.

broj = int(input(“Napiši broj: “))

ako je broj > 10:

    print(“prvi red”)

    print(“drugi red”)

    print (“treći red”)

print(“Linija koja se izvršava, bez obzira na uneseni broj”)

print(“Završi aplikaciju”)

Pokušajte pogoditi kakav će biti izlaz ako unesete vrijednosti 2, 5, 10, 15, 50.

Kao što vidite, ako je broj koji je uneo korisnik veći od deset, izlaze tri reda + jedan sa tekstom „Pokreni svaki put…“ i jedan „Kraj“, a ako je manji od deset, onda samo jedan, sa drugačiji tekst. Samo linije 3,4,5 će se izvršiti ako je istina. Međutim, posljednja dva reda će biti napisana bez obzira koji broj korisnik odredi.

Ako koristite izraze direktno u konzoli, rezultat će biti drugačiji. Tumač odmah uključuje višelinijski način rada ako nakon navođenja kriterija verifikacije pritisnete Enter.

Pretpostavimo da smo napisali sljedeći niz naredbi.

>>>

>>> n = 100

>>> ako je n > 10:

...

Nakon toga, vidjet ćemo da je >>> zamijenjeno trotočkom. To znači da je režim višelinijskog unosa omogućen. Jednostavnim riječima, ako pritisnete Enter, bit ćete prebačeni na ulaz druge faze instrukcije. 

A da biste izašli iz ovog bloka, potrebno je da bloku dodate još jednu konstrukciju if.

>>>

>>> n = 100

>>> ako je n > 10:

… print(«nv 10»)

...

Ako uslov nije tačan, program se završava. Ovo je problem, jer korisnik može doživjeti da se takav program zatvorio zbog kvara. Stoga je potrebno dati povratnu informaciju korisniku. Za to se koristi link ako-drugo.

operator izraza ako-drugo

Ovaj operator vam omogućava da implementirate vezu: ako izraz odgovara određenom pravilu, izvršite ove radnje, a ako ne, onda druge. Odnosno, omogućava vam da podijelite tok programa na dva puta. Sintaksa je intuitivna:

ako stanje:

    # if blok

    izjava 1

    izjava 2

    i tako dalje

drugo:

    # else blok

    izjava 3

    izjava 4

    i tako dalje:

Hajde da objasnimo kako ovaj operator radi. Prvo, standardni izraz se izvršava u niti tisa, provera da li se poklapa stanje "tačno ili netačno". Dalje radnje zavise od rezultata provjere. Ako je istinito, instrukcija koja je u nizu instrukcija nakon uvjeta se izvršava direktno. tisa, ako je lažno, onda drugo

Na ovaj način možete riješiti greške. Na primjer, korisnik treba da unese radijus. Očigledno, to može biti samo broj sa znakom plus, ili je nulta vrijednost. Ako je manji od 0, tada morate poslati poruku u kojoj se traži da unesete pozitivan broj. 

Evo koda koji implementira ovaj zadatak. Ali ovdje postoji jedna greška. Pokušajte pogoditi koji. 

radijus = int(input(“Unesite radijus: “))

ako je radijus >= 0:

    print(“Okrug = “, 2 * 3.14 * polumjer)

    print(“Površina = “, 3.14 * radijus ** 2)

    drugo:

        print(“Molimo unesite pozitivan broj”)

Greška neusklađenosti uvlačenja. If i Else moraju biti locirani bez njih ili sa istim brojem (ovisno o tome da li su ugniježđeni ili ne).

Hajde da damo još jedan slučaj upotrebe (gde će sve biti ispravno sa poravnanjem operatora) – element aplikacije koji proverava lozinku.

lozinka = input(“Unesite lozinku: “)

ako je lozinka == «sshh»:

    print(“Dobrodošli”)

drugo:

    print(“Pristup odbijen”)

Ovo uputstvo preskače osobu dalje ako je lozinka sshh. Ako postoji bilo koja druga kombinacija slova i brojeva, onda se prikazuje poruka “Pristup odbijen”.

izraz-izraz ako-elif-else

Samo ako nekoliko uslova nije tačno, izvršava se naredba koja se nalazi u bloku. drugo. Ovaj izraz funkcionira ovako.

ako uvjet_1:

    # if blok

    izjava

    izjava

    više izjava

elif condition_2:

    # prvi elif blok

    izjava

    izjava

    više izjava

elif condition_3:

    # drugi elif blok

    izjava

    izjava

    više izjava

...

drugo

    izjava

    izjava

    više izjava

Možete odrediti bilo koji broj dodatnih uslova.

Ugniježđene izjave

Drugi način implementacije više uslova je umetanje dodatnih provjera uvjeta u blok if.

operator if unutar drugog bloka uslova

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

per_grad = int(input(“Unesite svoj kreditni rejting: “))

ako per_grad > 70:

    # vanjski if blok

        ako gre_score > 150:

            # unutrašnji if blok

    print(“Čestitamo, dobili ste zajam”)

drugo:

    print(“Žao nam je, ne ispunjavate uslove za zajam”)

Ovaj program vrši provjeru kreditnog rejtinga. Ako je manji od 70, program javlja da korisnik ne ispunjava uslove za kredit. Ako je veći, vrši se druga provjera da se vidi da li je trenutni kreditni limit veći od 150. Ako da, onda se prikazuje poruka da je kredit izdat.

Ako su obje vrijednosti netačne, tada se prikazuje poruka da korisnik nema mogućnost dobivanja kredita. 

Hajde sada da malo preradimo taj program.

gre_score = int(input(“Unesite ograničenje struje: “))

per_grad = int(input(“Unesite kreditni rezultat: “))

ako per_grad > 70:

    ako gre_score > 150:

        print(“Čestitamo, dobili ste zajam”)

    drugo:

        print(“Vaš kreditni limit je nizak”)

drugo:

    print(“Izvinite, ne ispunjavate uslove za kredit”)

Sam kod je vrlo sličan, ali ugniježđen if takođe daje algoritam u slučaju da se ispostavi da je uslov iz njega netačan. Odnosno, limit na kartici je nedovoljan, ali je kreditna istorija dobra, prikazuje se poruka “Imate nizak kreditni rejting”.

if-else izraz unutar uslova drugo

Hajde da napravimo još jedan program koji određuje ocjenu učenika na osnovu rezultata testa.

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

ako je rezultat >= 90:

    print(“Odlično! Vaša ocjena je A”)

drugo:

    ako je rezultat >= 80:

print(“Odlično! Vaša ocjena je B”)

    drugo:

ako je rezultat >= 70:

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

drugo:

    ako je rezultat >= 60:

print(“Vaša ocjena je D. Vrijedi ponoviti gradivo.”)

    drugo:

print(“Pali ste na ispitu”)

Aplikacija prvo provjerava da li je rezultat veći ili jednak 90. ​​Ako da, onda vraća A ocjenu. Ako je ovaj uvjet netačan, tada se izvode naknadne provjere. Vidimo da je algoritam na prvi pogled skoro isti. Dakle, umjesto da provjerim unutra drugo bolje koristiti kombinaciju ako-elif-else.

Dakle, operater if obavlja vrlo važnu funkciju – osigurava da se određeni dijelovi koda izvršavaju samo ako postoji potreba za tim. Nemoguće je zamisliti programiranje bez toga, jer čak i najjednostavniji algoritmi zahtijevaju viljuške poput „ako idete lijevo, naći ćete ga, a ako idete udesno, onda morate učiniti ovo i ono“.

Ostavite odgovor