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

U procesu učenja programiranja često je potrebno izraditi programe koje nije tako jednostavno 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 izjave. Uz njihovu pomoć možete kontrolirati tijek izvršavanja koda, stvaranje petlji ili izvođenje određenih radnji samo kada je određeni uvjet istinit.

Danas ćemo govoriti o if naredbi koja provjerava trenutno stanje za određeni uvjet, te na temelju tih informacija donosi odluke o daljnjim akcijama.

Vrste kontrolnih izjava

Općenito, if nije jedina izjava koja kontrolira tijek programa. Kao što on sam može biti sastavni dio većeg lanca operatera.

Tu su i petlje i naredbe koje kontroliraju proces njegovog izvođenja. Danas ćemo govoriti samo o uvjetnom operatoru i lancima u kojima on može sudjelovati.

U programiranju postoji nešto poput grananja. Upravo to znači niz naredbi koji se izvršava samo ako je određeni uvjet istinit. Sami kriteriji 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. Uvjetne izjave postoje u nekoliko vrsta:

  1. S jednom granom. Odnosno, provodi se jedna provjera, uslijed koje se izvode određene radnje.
  2. S dvije ili više grana. Ako je kriterij 1 točan, onda provjerite kriterij 2. Ako je točan, onda provjerite 3. I tako, izvršite onoliko provjera koliko je potrebno.
  3. Uz nekoliko uvjeta. Ovdje je sve jednostavno. Tumač provjerava više uvjeta ili jedan od njih.

ako izjava

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

ako uvjet:

    <uhodnoe vyraženie 1>

    <uhodnoe vyraženie 2>

<ne vhodâŝee vyraženie>

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

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

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

Prema jezičnoj dokumentaciji, uvlaka je 4 razmaka. 

Kako ovaj operater radi? Kada tumač 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. Inače se sve naredbe iz ovog bloka preskaču.

Ako naredba nakon uvjeta nije uvučena, ne tretira se kao if blok. U našoj situaciji, ova linija je . Stoga, bez obzira na rezultat provjere, ovaj će se redak izvršiti.

Ovdje je isječak koda za primjer kako ovaj operator radi.

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

ako je broj > 10:

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

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

Ali ako navedete broj 100, prevoditelj će razumjeti da je više od deset i prijaviti ga.

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

Postoji samo jedna naredba u gornjem kodu. Ali ima ih puno više. Jedini uvjet je uvlačenje.

Analizirajmo sada ovaj niz naredbi.

broj = int(ulaz(“Napišite broj: “))

ako je broj > 10:

    ispis(“prvi redak”)

    ispis(“drugi redak”)

    print(“treći redak”)

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

print(“Kraj aplikacije”)

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

Kao što vidite, ako je broj koji je unio korisnik veći od deset, izlaze tri retka + jedan s tekstom "Pokreni svaki put ..." i jedan "Kraj", a ako je manji od deset, onda samo jedan, s drugačiji tekst. Samo će se linije 3,4,5 izvršiti ako je istinito. Međutim, posljednja dva retka bit će napisana bez obzira na broj koji korisnik navede.

Ako izjave koristite izravno u konzoli, rezultat će biti drugačiji. Tumač odmah uključuje višeredni način ako nakon navođenja kriterija provjere pritisnete Enter.

Pretpostavimo da smo napisali sljedeći niz naredbi.

>>>

>>> n = 100

>>> ako je n > 10:

...

Nakon toga ćemo vidjeti da je >>> zamijenjeno elipsom. To znači da je višeredni način unosa omogućen. Jednostavnim riječima, ako pritisnete Enter, bit ćete prebačeni na unos druge faze instrukcije. 

A da biste izašli iz ovog bloka, morate bloku dodati još jednu konstrukciju if.

>>>

>>> n = 100

>>> ako je n > 10:

… ispis(«nv 10»)

...

Ako uvjet nije istinit, program završava. To je problem jer korisnik može doživjeti da je takav program zatvoren zbog kvara. Stoga je potrebno dati povratnu informaciju korisniku. Za to se koristi poveznica ako-drugo.

operator izraza ako-drugo

Ovaj vam operator omogućuje implementaciju veze: ako izraz odgovara određenom pravilu, izvršite ove radnje, a ako ne, onda druge. Odnosno, omogućuje vam da tok programa podijelite na dvije ceste. Sintaksa je intuitivna:

ako uvjet:

    # if blok

    izjava 1

    izjava 2

    i tako dalje

drugo:

    # else blok

    izjava 3

    izjava 4

    i tako dalje:

Objasnimo kako ovaj operator radi. Prvo se standardna izjava izvršava u niti tisa, provjeravajući odgovara li stanje "istina ili laž". Daljnje radnje ovise o rezultatima provjere. Ako je istina, instrukcija koja je u nizu instrukcija nakon uvjeta izvršava se izravno. tisa, ako je lažna, onda drugo

Na taj način možete rješavati pogreške. Na primjer, korisnik treba unijeti radijus. Očito, to može biti samo broj sa znakom plus ili je to nulta vrijednost. Ako je manji od 0, morate izdati poruku u kojoj se traži da unesete pozitivan broj. 

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

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

ako je polumjer >= 0:

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

    ispis(“Površina = “, 3.14 * polumjer ** 2)

    drugo:

        print(“Molimo unesite pozitivan broj”)

Pogreška neusklađenosti uvlake. Ako i Drugo moraju se nalaziti bez njih ili s istim brojem njih (ovisno o tome jesu li ugniježđene ili ne).

Dajmo još jedan slučaj upotrebe (gdje će sve biti ispravno s poravnanjem operatora) – element aplikacije koji provjerava lozinku.

lozinka = unos(“Unesite lozinku: “)

ako je lozinka == «sshh»:

    print(“Dobro došli”)

drugo:

    print(“Pristup odbijen”)

Ova uputa dalje preskače osobu ako je lozinka sshh. Ako postoji bilo koja druga kombinacija slova i brojeva, prikazuje se poruka "Pristup odbijen".

izjava-izraz if-elif-else

Samo ako nekoliko uvjeta nije istinito, 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 uvjet_2:

    # prvi elif blok

    izjava

    izjava

    više izjava

elif uvjet_3:

    # drugi elif blok

    izjava

    izjava

    više izjava

...

drugo

    izjava

    izjava

    više izjava

Možete navesti bilo koji broj dodatnih uvjeta.

Ugniježđene izjave

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

Operator if unutar drugog bloka uvjeta

gre_score = int(input(“Unesite svoje trenutno kreditno ograničenje”))

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

ako je per_grad > 70:

    # vanjski if blok

        ako je gre_score > 150:

            # unutarnji if blok

    print(“Čestitamo, dobili ste zajam”)

drugo:

    print(“Žao nam je, nemate pravo na zajam”)

Ovaj program obavlja provjeru kreditnog rejtinga. Ako je manji od 70, program javlja da korisnik nema pravo na kredit. Ako je veći, vrši se druga provjera da li je trenutni kreditni limit veći od 150. Ako da, prikazuje se poruka da je kredit izdan.

Ukoliko su obje vrijednosti lažne, tada se ispisuje poruka da korisnik nema mogućnost dobivanja kredita. 

Sada malo preradimo taj program.

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

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

ako je per_grad > 70:

    ako je gre_score > 150:

        print(“Čestitamo, dobili ste zajam”)

    drugo:

        print(“Vaš kreditni limit je nizak”)

drugo:

    print(“Žao nam je, niste kvalificirani za kredit”)

Sam kod je vrlo sličan, ali ugniježđen if također pruža algoritam u slučaju da se uvjet iz njega pokaže lažnim. Odnosno, ograničenje na kartici je nedovoljno, ali kreditna povijest je dobra, prikazuje se poruka "Imate nizak kreditni rejting".

if-else iskaz unutar uvjeta drugo

Napravimo još jedan program koji određuje ocjenu učenika na temelju rezultata testa.

rezultat = int(unos(“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(“Tvoja ocjena je D. Isplati se ponoviti gradivo.”)

    drugo:

print(“Pao si na ispitu”)

Aplikacija najprije provjerava je li rezultat veći ili jednak 90. ​​Ako da, vraća ocjenu A. Ako je ovaj uvjet pogrešan, tada se provode naknadne provjere. Vidimo da je algoritam na prvi pogled gotovo isti. Pa umjesto provjere unutra drugo bolje koristiti kombinaciju ako-elif-drugo.

Dakle operater if obavlja vrlo važnu funkciju - osigurava da se određeni dijelovi koda izvode samo ako za to postoji potreba. Nemoguće je zamisliti programiranje bez njega, jer čak i najjednostavniji algoritmi zahtijevaju rašlje tipa “ako ideš lijevo, naći ćeš ga, a ako ideš desno, onda trebaš napraviti to i to”.

Ostavi odgovor