Voorwaardelike indien-stelling in Python. Sintaksis, else/elif blokke, voorbeelde

In die proses om te leer programmeer, is dit dikwels nodig om programme te skep wat nie so maklik is om in die werklike lewe toe te pas nie. Na alles, van tyd tot tyd moet jy instruksies net onder sekere voorwaardes volg. Om dit in die program te kan implementeer, het alle tale beheerstellings. Met hul hulp kan u die vloei van kode-uitvoering beheer, lusse skep of sekere aksies uitvoer slegs wanneer 'n sekere toestand waar is.

Vandag sal ons praat oor die if-verklaring, wat die huidige situasie vir 'n sekere toestand nagaan, en op grond van hierdie inligting besluite neem oor verdere aksies.

Tipes beheerverklarings

In die algemeen, as is nie die enigste stelling wat die vloei van 'n program beheer nie. Sowel as hy self kan 'n komponent van 'n groter ketting van operateurs wees.

Daar is ook lusse en stellings wat die proses van die uitvoering daarvan beheer. Vandag sal ons net praat oor die voorwaardelike operateur en die kettings waaraan dit kan deelneem.

In programmering is daar iets soos vertakking. Dit is juis dit wat 'n volgorde van opdragte beteken wat slegs uitgevoer word as 'n sekere voorwaarde waar is. Die kriteria self kan anders wees:

  1. Gelykheid van 'n veranderlike aan 'n sekere waarde.
  2. Om 'n spesifieke aksie uit te voer.
  3. Toepassingstatus (ineengestort of nie).

Die spektrum kan baie groter wees. Voorwaardelike stellings kom in verskeie tipes voor:

  1. Met een tak. Dit wil sê, 'n enkele kontrole word uitgevoer, waardeur sekere aksies uitgevoer word.
  2. Met twee of meer takke. As maatstaf 1 waar is, kontroleer dan maatstaf 2. As dit waar is, kontroleer dan 3. En so, voer soveel kontroles uit as wat vereis word.
  3. Met verskeie voorwaardes. Alles is eenvoudig hier. Die tolk kyk vir verskeie toestande of een daarvan.

indien verklaring

Die struktuur van die if-stelling is soortgelyk in alle tale. In Python is die sintaksis egter ietwat anders as al die ander:

indien toestand:

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

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

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

Eerstens word die operateur self verklaar, waarna die toestand geskryf word waaronder dit begin werk. Die toestand kan óf waar óf onwaar wees.

Dit word gevolg deur 'n blok met opdragte. As dit onmiddellik 'n kriterium volg waaraan voldoen moet word, word die ooreenstemmende volgorde van opdragte 'n if-blok genoem. Jy kan enige aantal opdragte daarin gebruik.

Aandag! Die inkeping binne alle if-blokopdragte moet dieselfde grootte wees. Die blokgrense word deur die inkepings bepaal. 

Volgens die taaldokumentasie is die inkeping 4 spasies. 

Hoe werk hierdie operateur? Wanneer die tolk die if-woord sien, kontroleer dit onmiddellik die uitdrukking teen die gebruiker-gespesifiseerde kriteria. As dit die geval is, dan begin hy na instruksies soek en dit volg. Andersins word alle opdragte van hierdie blok oorgeslaan.

As 'n stelling na die voorwaarde nie ingekeep is nie, word dit nie as 'n if-blok hanteer nie. In ons situasie is hierdie lyn . Daarom, ongeag die resultaat van die tjek, sal hierdie reël uitgevoer word.

Hier is 'n kodebrokkie vir 'n voorbeeld van hoe hierdie operateur werk.

number = int(input(“Voer 'n getal in: “))

as getal > 10:

    druk ("Die getal is groter as 10")

Hierdie program vra die gebruiker vir 'n nommer en kyk of dit groter as 10 is. Indien wel, gee dit die toepaslike inligting terug. Byvoorbeeld, as die gebruiker die nommer 5 invoer, sal die program eenvoudig eindig, en dit is dit.

Maar as jy die getal 100 spesifiseer, sal die tolk verstaan ​​dat dit meer as tien is, en dit rapporteer.

Aandag! In ons geval, as die toestand vals is, stop die program, want geen opdragte word na die instruksie gegee nie.

Daar is net een opdrag in die bogenoemde kode. Maar daar is baie meer van hulle. Die enigste vereiste is om inkeep.

Kom ons ontleed nou hierdie volgorde van opdragte.

number = int(input(“Skryf 'n getal: “))

as getal > 10:

    print ("eerste reël")

    druk ("tweede reël")

    druk ("derde reël")

print(“Die reël wat uitgevoer word, ongeag die nommer wat ingevoer is”)

druk ("Beëindig aansoek")

Probeer raai wat die uitset sal wees as jy die waardes 2, 5, 10, 15, 50 invoer.

Soos u kan sien, as die getal wat deur die gebruiker ingevoer is meer as tien is, word drie reëls uitgevoer + een met die teks "Hardloop elke keer ..." en een "End", en as minder as tien, dan slegs een, met 'n ander teks. Slegs reëls 3,4,5 sal uitgevoer word indien waar. Die laaste twee reëls sal egter geskryf word, ongeag watter nommer die gebruiker spesifiseer.

As jy die stellings direk in die konsole gebruik, sal die resultaat anders wees. Die tolk skakel onmiddellik die multilynmodus aan as, nadat die verifikasiekriterium gespesifiseer is, Enter druk.

Gestel ons het die volgende volgorde van opdragte geskryf.

>>>

>>> n = 100

>>> as n > 10:

...

Daarna sal ons sien dat >>> deur ellips vervang is. Dit beteken dat die multilyn-invoermodus geaktiveer is. In eenvoudige woorde, as jy Enter druk, sal jy oorgedra word na die invoer van die tweede fase van die instruksie. 

En om hierdie blok te verlaat, moet jy nog een konstruksie by die blok voeg if.

>>>

>>> n = 100

>>> as n > 10:

… druk(«nv 10»)

...

As die voorwaarde nie waar is nie, eindig die program. Dit is 'n probleem, aangesien die gebruiker so 'n program kan sien as gesluit as gevolg van 'n mislukking. Daarom is dit nodig om terugvoer aan die gebruiker te gee. Hiervoor word 'n skakel gebruik as-anders.

uitdrukking operateur as-anders

Hierdie operateur laat jou toe om 'n skakel te implementeer: as die uitdrukking by 'n sekere reël pas, voer hierdie aksies uit, en indien nie, dan ander. Dit wil sê, dit laat jou toe om die vloei van die program in twee paaie te verdeel. Die sintaksis is intuïtief:

indien toestand:

    # as blok

    stelling 1

    stelling 2

    en so aan

anders:

    # ander blok

    stelling 3

    stelling 4

    en so aan:

Kom ons verduidelik hoe hierdie operateur werk. Eerstens word die standaardstelling in die draad uitgevoer taxus, kyk of dit ooreenstem toestand "waar" of "onwaar". Verdere aksies hang af van die resultate van die tjek. As dit waar is, word die instruksie wat in die volgorde van instruksies volg wat die voorwaarde volg, direk uitgevoer. taxus, as dit vals is, dan anders

Op hierdie manier kan jy foute hanteer. Byvoorbeeld, die gebruiker moet 'n radius invoer. Dit kan natuurlik net 'n getal met 'n plusteken wees, of dit is 'n nulwaarde. As dit minder as 0 is, moet jy 'n boodskap uitreik wat jou vra om 'n positiewe getal in te voer. 

Hier is die kode wat hierdie taak implementeer. Maar hier is een fout. Probeer om te raai watter een. 

radius = int(input(“Voer radius in: “))

as radius >= 0:

    print(“Omtrek = “, 2 * 3.14 * radius)

    print(“Area = “, 3.14 * radius ** 2)

    anders:

        print(“Voer asseblief 'n positiewe getal in”)

Fout met inkeping wat nie ooreenstem nie. As en anders moet sonder hulle of met dieselfde aantal daarvan geleë wees (afhangende van of hulle geneste is of nie).

Kom ons gee nog 'n gebruiksgeval (waar alles korrek sal wees met operateurbelyning) - 'n toepassingselement wat 'n wagwoord nagaan.

wagwoord = invoer(“Voer wagwoord in: “)

as wagwoord == «sshh»:

    druk ("Welkom")

anders:

    druk ("Toegang geweier")

Hierdie instruksie slaan die persoon verder oor as die wagwoord sshh is. As enige ander kombinasie van letters en syfers, dan vertoon dit die boodskap "Toegang geweier".

stelling-uitdrukking as-elif-else

Slegs as verskeie voorwaardes nie waar is nie, word die stelling wat in die blok is uitgevoer. anders. Hierdie uitdrukking werk so.

as toestand_1:

    # as blok

    verklaring

    verklaring

    meer verklaring

elif toestand_2:

    # eerste elif blok

    verklaring

    verklaring

    meer verklaring

elif toestand_3:

    # tweede elif blok

    verklaring

    verklaring

    meer verklaring

...

anders

    verklaring

    verklaring

    meer verklaring

Jy kan enige aantal bykomende voorwaardes spesifiseer.

Geneste stellings

Nog 'n manier om veelvuldige voorwaardes te implementeer, is om bykomende toestandkontroles in die if-blok in te voeg.

operateur if binne 'n ander toestandblok

gre_score = int(input(“Voer jou huidige kredietlimiet in”))

per_grad = int(input(“Voer jou kredietgradering in: “))

as per_graad > 70:

    # buitenste as blok

        as gre_telling > 150:

            # binneste as blok

    print(“Baie geluk, jy het 'n lening ontvang”)

anders:

    print ("Jammer, jy kom nie in aanmerking vir 'n lening nie")

Hierdie program doen wel 'n kredietgraderingkontrole. As dit minder as 70 is, meld die program dat die gebruiker nie vir krediet in aanmerking kom nie. As dit groter is, word 'n tweede kontrole uitgevoer om te sien of die huidige kredietlimiet groter as 150 is. Indien wel, word 'n boodskap vertoon dat die lening uitgereik is.

As beide waardes vals is, word 'n boodskap vertoon dat die gebruiker nie die moontlikheid het om 'n lening te bekom nie. 

Laat ons nou daardie program 'n bietjie herwerk.

gre_score = int(input(“Voer huidige limiet in: “))

per_grad = int(input(“Voer krediettelling in:“))

as per_graad > 70:

    as gre_telling > 150:

        print(“Baie geluk, jy het 'n lening ontvang”)

    anders:

        druk ("Jou kredietlimiet is laag")

anders:

    print(“Jammer, jy kom nie in aanmerking vir krediet nie”)

Die kode self is baie soortgelyk, maar geneste if verskaf ook 'n algoritme ingeval die toestand daaruit vals blyk te wees. Dit wil sê, die limiet op die kaart is onvoldoende, maar die kredietgeskiedenis is goed, die boodskap "Jy het 'n lae kredietgradering" word vertoon.

if-else stelling binne 'n voorwaarde anders

Kom ons maak nog 'n program wat 'n student se graad bepaal op grond van toetstellings.

telling = int(input(“Voer jou telling in:“))

as telling >= 90:

    print(“Goed! Jou graad is A”)

anders:

    as telling >= 80:

print(“Goed! Jou graad is B”)

    anders:

as telling >= 70:

    print(“Goed! Jou graad is C”)

anders:

    as telling >= 60:

print(“Jou graad is D. Dit is die moeite werd om die materiaal te herhaal.”)

    anders:

print(“Jy het die eksamen gedruip”)

Die aansoek kyk eers of die telling groter as of gelyk aan 90 is. Indien wel, gee dit 'n A-graad terug. As hierdie toestand vals is, word daaropvolgende kontroles uitgevoer. Ons sien dat die algoritme byna dieselfde is met die eerste oogopslag. Dus in plaas daarvan om binne te kyk anders beter om 'n kombinasie te gebruik as-elif-anders.

Dus die operateur if voer 'n baie belangrike funksie uit - dit maak seker dat sekere stukke kode slegs uitgevoer word as daar 'n behoefte daarvoor is. Dit is onmoontlik om programmering daarsonder voor te stel, want selfs die eenvoudigste algoritmes vereis vurke soos "as jy na links gaan, sal jy dit vind, en as jy na regs gaan, dan moet jy dit en dat doen."

Lewer Kommentaar