Ehdollinen if-lause Pythonissa. Syntaksi, else/elif-lohkot, esimerkit

Ohjelmoinnin oppimisen yhteydessä on usein tarpeen luoda ohjelmia, joita ei ole niin helppo soveltaa tosielämään. Loppujen lopuksi sinun on aika ajoin noudatettava ohjeita vain tietyissä olosuhteissa. Jotta tämä voidaan toteuttaa ohjelmassa, kaikilla kielillä on ohjauslausekkeet. Niiden avulla voit hallita koodin suorittamisen kulkua, luoda silmukoita tai suorittaa tiettyjä toimintoja vain, kun tietty ehto on totta.

Tänään puhutaan if-lauseesta, joka tarkistaa nykytilanteen tietyn tilan suhteen ja tekee tämän tiedon perusteella päätöksiä jatkotoimista.

Valvontalausuntojen tyypit

Yleensä if ei ole ainoa lauseke, joka ohjaa ohjelman kulkua. Sekä hän itse voi olla osa suurempaa toimijaketjua.

On myös silmukoita ja lauseita, jotka ohjaavat sen suoritusprosessia. Tänään puhumme vain ehdollisista toimijoista ja ketjuista, joihin se voi osallistua.

Ohjelmoinnissa on sellainen asia kuin haarautuminen. Juuri tämä tarkoittaa komentosarjaa, joka suoritetaan vain, jos tietty ehto on tosi. Itse kriteerit voivat olla erilaisia:

  1. Muuttujan yhtäläisyys tiettyyn arvoon.
  2. Tietyn toiminnon suorittaminen.
  3. Sovelluksen tila (tiivistetty tai ei).

Spektri voi olla paljon suurempi. Ehdollisia lausuntoja on useita tyyppejä:

  1. Yhdellä haaralla. Eli suoritetaan yksi tarkistus, jonka seurauksena suoritetaan tiettyjä toimia.
  2. Kahdella tai useammalla haaralla. Jos kriteeri 1 on tosi, tarkista ehto 2. Jos se on totta, tarkista 3. Suorita niin monta tarkistusta kuin vaaditaan.
  3. Useilla ehdoilla. Täällä kaikki on yksinkertaista. Tulkki tarkistaa useita ehtoja tai yhden niistä.

jos selvitys

If-lauseen rakenne on samanlainen kaikilla kielillä. Pythonissa sen syntaksi eroaa kuitenkin jonkin verran kaikista muista:

jos ehto:

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

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

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

Ensin ilmoitetaan itse operaattori, jonka jälkeen kirjoitetaan ehto, jossa se alkaa toimia. Ehto voi olla joko tosi tai epätosi.

Tätä seuraa lohko komentoineen. Jos se seuraa välittömästi täytettävää kriteeriä, vastaavaa komentosarjaa kutsutaan if-lohkoksi. Voit käyttää siinä mitä tahansa komentoja.

Huomio! All if -lohkokomentojen sisennyksen on oltava samankokoinen. Lohkojen rajat määritetään sisennyksillä. 

Kielidokumentaation mukaan sisennys on 4 välilyöntiä. 

Miten tämä operaattori toimii? Kun tulkki näkee if-sanan, se tarkistaa lausekkeen välittömästi käyttäjän määrittämien kriteerien perusteella. Jos näin on, hän alkaa etsiä ohjeita ja noudattaa niitä. Muussa tapauksessa kaikki tämän lohkon komennot ohitetaan.

Jos ehdon jälkeistä lausetta ei ole sisennetty, sitä ei käsitellä if-lohkona. Meidän tilanteessamme tämä linja on . Siksi tämä rivi suoritetaan tarkistuksen tuloksesta riippumatta.

Tässä on koodinpätkä esimerkkiä tämän operaattorin toiminnasta.

numero = int(input("Anna numero: "))

jos luku > 10:

    tulosta ("Luku on suurempi kuin 10")

Tämä ohjelma pyytää käyttäjää antamaan numeron ja tarkistaa, onko se suurempi kuin 10. Jos on, se palauttaa tarvittavat tiedot. Esimerkiksi, jos käyttäjä syöttää numeron 5, ohjelma yksinkertaisesti loppuu, ja siinä se.

Mutta jos määrität numeron 100, tulkki ymmärtää, että se on enemmän kuin kymmenen, ja ilmoittaa siitä.

Huomio! Meidän tapauksessamme, jos ehto on epätosi, ohjelma pysähtyy, koska käskyn jälkeen ei anneta komentoja.

Yllä olevassa koodissa on vain yksi komento. Mutta niitä on paljon enemmän. Ainoa vaatimus on sisennys.

Analysoidaan nyt tätä komentosarjaa.

numero = int(input("Kirjoita numero: "))

jos luku > 10:

    tulosta ("ensimmäinen rivi")

    tulosta ("toinen rivi")

    tulosta ("kolmas rivi")

print ("Suoritettava rivi riippumatta syötetystä numerosta")

tulosta ("Lopeta hakemus")

Yritä arvata, mikä tulos on, jos syötät arvot 2, 5, 10, 15, 50.

Kuten näette, jos käyttäjän syöttämä luku on enemmän kuin kymmenen, tulostetaan kolme riviä + yksi tekstillä "Suorita joka kerta ..." ja yksi "Loppu", ja jos vähemmän kuin kymmenen, niin vain yksi. eri tekstiä. Vain rivit 3,4,5 suoritetaan, jos tosi. Kuitenkin kaksi viimeistä riviä kirjoitetaan riippumatta siitä, minkä numeron käyttäjä määrittää.

Jos käytät lauseita suoraan konsolissa, tulos on erilainen. Tulkki kytkee heti päälle monirivisen tilan, jos vahvistuskriteerin määrittämisen jälkeen painat Enter-näppäintä.

Oletetaan, että olemme kirjoittaneet seuraavan komentosarjan.

>>>

>>> n = 100

>>> jos n > 10:

...

Sen jälkeen näemme, että >>> on korvattu ellipsillä. Tämä tarkoittaa, että monirivinen syöttötila on käytössä. Yksinkertaisesti sanottuna, jos painat Enter, siirryt ohjeen toisen vaiheen syötteeseen. 

Ja jotta voit poistua tästä lohkosta, sinun on lisättävä lohkoon vielä yksi rakennelma if.

>>>

>>> n = 100

>>> jos n > 10:

… tulosta («nv 10»)

...

Jos ehto ei ole totta, ohjelma päättyy. Tämä on ongelma, koska käyttäjä voi havaita tällaisen ohjelman sulkeutuneen vian vuoksi. Siksi on välttämätöntä antaa palautetta käyttäjälle. Tätä varten käytetään linkkiä tai muuten.

lausekeoperaattori tai muuten

Tämän operaattorin avulla voit toteuttaa linkin: jos lauseke vastaa tiettyä sääntöä, suorita nämä toiminnot, ja jos ei, niin muut. Eli sen avulla voit jakaa ohjelman kulun kahdelle tielle. Syntaksi on intuitiivinen:

jos ehto:

    #jos esto

    lausunto 1

    lausunto 2

    jne.

else:

    #muut lohko

    lausunto 3

    lausunto 4

    ja niin edelleen:

Selitetään kuinka tämä operaattori toimii. Ensin säikeessä suoritetaan vakiolauseke marjakuusi, tarkistaa, sopiiko se yhteen ehto "totta vai tarua". Jatkotoimenpiteet riippuvat tarkastuksen tuloksista. Jos tosi, ehtoa seuraavassa käskysarjassa oleva käsky suoritetaan suoraan. marjakuusi, jos se on väärä, niin muu

Näin voit käsitellä virheitä. Käyttäjän on esimerkiksi annettava säde. Ilmeisesti se voi olla vain numero, jossa on plusmerkki, tai se voi olla nolla-arvo. Jos se on pienempi kuin 0, sinun on lähetettävä viesti, jossa sinua pyydetään syöttämään positiivinen luku. 

Tässä on koodi, joka toteuttaa tämän tehtävän. Mutta tässä on yksi virhe. Yritä arvata kumpi. 

säde = int(input("Anna säde: "))

jos säde >= 0:

    print("Ympärysmitta = ", 2 * 3.14 * säde)

    print("Ala = ", 3.14 * säde ** 2)

    else:

        tulosta ("Syötä positiivinen luku")

Sisennysvirhe. Jos ja Muut on sijoitettava ilman niitä tai samalla määrällä niitä (riippuen siitä, ovatko ne sisäkkäisiä vai eivät).

Esitetään toinen käyttötapaus (jossa kaikki on oikein operaattorikohdistuksessa) – salasanan tarkistava sovelluselementti.

salasana = input ("Anna salasana:")

jos salasana == «sshh»:

    tulosta ("Tervetuloa")

else:

    tulosta ("Pääsy kielletty")

Tämä ohje ohittaa henkilön pidemmälle, jos salasana on sshh. Jos jokin muu kirjainten ja numeroiden yhdistelmä, se näyttää viestin "Pääsy estetty".

lauseke-ilmaus if-elif-else

Vain jos useat ehdot eivät ole tosia, lohkossa oleva käsky suoritetaan. muu. Tämä ilmaisu toimii näin.

jos ehto_1:

    #jos esto

    selvitys

    selvitys

    lisää lausuntoa

elif condition_2:

    # ensimmäinen elif-lohko

    selvitys

    selvitys

    lisää lausuntoa

elif condition_3:

    # toinen elif-lohko

    selvitys

    selvitys

    lisää lausuntoa

...

muu

    selvitys

    selvitys

    lisää lausuntoa

Voit määrittää minkä tahansa määrän lisäehtoja.

Sisäkkäiset lausunnot

Toinen tapa toteuttaa useita ehtoja on lisätä lisäehtotarkistuksia if-lohkoon.

operaattori if toisen kuntolohkon sisällä

gre_score = int(input("Anna nykyinen luottorajasi")

per_grad = int(input("Anna luottoluokitus: "))

jos per_grad > 70:

    # ulompi jos lohko

        jos gre_score > 150:

            # sisäinen jos lohko

    print ("Onnittelut, olet saanut lainan")

else:

    print ("Anteeksi, et ole oikeutettu lainaan")

Tämä ohjelma suorittaa luottoluokituksen tarkistuksen. Jos se on alle 70, ohjelma ilmoittaa, että käyttäjä ei ole oikeutettu hyvitykseen. Jos se on suurempi, tarkistetaan toisen kerran, onko nykyinen luottoraja suurempi kuin 150. Jos kyllä, näyttöön tulee viesti, että laina on myönnetty.

Jos molemmat arvot ovat vääriä, näyttöön tulee viesti, että käyttäjällä ei ole mahdollisuutta saada lainaa. 

Muokataan nyt tuota ohjelmaa hieman.

gre_score = int(input("Anna nykyinen raja: "))

per_grad = int(input("Anna luottopisteet: "))

jos per_grad > 70:

    jos gre_score > 150:

        print ("Onnittelut, olet saanut lainan")

    else:

        tulosta ("Luottorajasi on alhainen")

else:

    print ("Anteeksi, et ole oikeutettu hyvitykseen")

Koodi itsessään on hyvin samanlainen, mutta sisäkkäinen if tarjoaa myös algoritmin siltä varalta, että sen ehto osoittautuu vääräksi. Eli kortin raja on riittämätön, mutta luottohistoria on hyvä, näyttöön tulee viesti "Sinulla on alhainen luottoluokitus".

if-else-lause ehdon sisällä muu

Tehdään toinen ohjelma, joka määrittää opiskelijan arvosanan testitulosten perusteella.

pisteet = int(input("Anna pisteesi: "))

jos tulos >= 90:

    print ("Hienoa! Arvosanasi on A")

else:

    jos tulos >= 80:

print ("Hienoa! Arvosanasi on B")

    else:

jos tulos >= 70:

    print ("Hyvä! Arvosanasi on C")

else:

    jos tulos >= 60:

print("Arvoslasi on D. Aineisto kannattaa toistaa.")

    else:

tulosta ("Epäonnistuit kokeessa")

Sovellus tarkistaa ensin, onko pistemäärä suurempi tai yhtä suuri kuin 90. Jos kyllä, se palauttaa arvosanan A. Jos tämä ehto on väärä, suoritetaan myöhempiä tarkistuksia. Näemme, että algoritmi on ensi silmäyksellä melkein sama. Sisätilojen tarkistamisen sijaan muu parempi käyttää yhdistelmää jos-elif-muu.

Operaattori siis if suorittaa erittäin tärkeän toiminnon – se varmistaa, että tietyt koodinpalat suoritetaan vain, jos sille on tarvetta. On mahdotonta kuvitella ohjelmointia ilman sitä, koska yksinkertaisimmatkin algoritmit vaativat haarukoita, kuten "jos menet vasemmalle, löydät sen ja jos menet oikealle, sinun on tehtävä tämä ja tuo".

Jätä vastaus