Betinget if-sætning i Python. Syntaks, else/elif blokke, eksempler

I processen med at lære at programmere er det ofte nødvendigt at lave programmer, der ikke er så lette at anvende i det virkelige liv. Når alt kommer til alt, skal du fra tid til anden kun følge instruktionerne under visse betingelser. For at kunne implementere dette i programmet har alle sprog kontroludsagn. Med deres hjælp kan du kontrollere strømmen af ​​kodeudførelse, oprette loops eller kun udføre bestemte handlinger, når en bestemt betingelse er sand.

I dag vil vi tale om if-erklæringen, som kontrollerer den aktuelle situation for en bestemt tilstand, og baseret på disse oplysninger træffer beslutninger om yderligere handlinger.

Typer af kontrolerklæringer

Generelt er if ikke den eneste erklæring, der styrer et programs flow. Ligesom han selv kan være en del af en større kæde af operatører.

Der er også loops og sætninger, der styrer processen med dens udførelse. I dag vil vi kun tale om den betingede operatør og de kæder, som den kan deltage i.

I programmering er der sådan noget som forgrening. Det er netop dette, der betyder en sekvens af kommandoer, der kun udføres, hvis en bestemt betingelse er sand. Kriterierne i sig selv kan være forskellige:

  1. Ligestilling af en variabel til en bestemt værdi.
  2. Udførelse af en bestemt handling.
  3. Ansøgningstilstand (sammenbrudt eller ej).

Spektret kan være meget større. Betingede udsagn findes i flere typer:

  1. Med én gren. Det vil sige, at der udføres en enkelt kontrol, som et resultat af hvilken visse handlinger udføres.
  2. Med to eller flere grene. Hvis kriterium 1 er sandt, så tjek kriterium 2. Hvis det er sandt, så tjek 3. Udfør så mange tjek som krævet.
  3. Med flere betingelser. Alt er enkelt her. Tolken kontrollerer for flere tilstande eller en af ​​dem.

hvis erklæring

Strukturen af ​​if-sætningen er ens på alle sprog. I Python er dens syntaks dog noget anderledes end alle de andre:

hvis tilstand:

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

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

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

Først erklæres operatøren selv, hvorefter betingelsen, hvorunder den begynder at arbejde, skrives. Betingelsen kan enten være sand eller falsk.

Dette efterfølges af en blok med kommandoer. Hvis den umiddelbart følger et kriterium, der skal opfyldes, kaldes den tilsvarende sekvens af kommandoer en if-blok. Du kan bruge et hvilket som helst antal kommandoer i den.

OBS! Indrykningen inden for alle if-blokkommandoer skal have samme størrelse. Blokgrænserne bestemmes af indrykningerne. 

Ifølge sprogdokumentationen er indrykket 4 mellemrum. 

Hvordan fungerer denne operatør? Når tolken ser if-ordet, tjekker den straks udtrykket mod de brugerspecificerede kriterier. Hvis dette er tilfældet, begynder han at lede efter instruktioner og følge dem. Ellers springes alle kommandoer fra denne blok over.

Hvis et udsagn efter betingelsen ikke er indrykket, behandles det ikke som en if-blok. I vores situation er denne linje . Derfor, uanset resultatet af kontrollen, vil denne linje blive udført.

Her er et kodestykke for et eksempel på, hvordan denne operatør fungerer.

tal = int(input(“Indtast et tal: “))

hvis nummer > 10:

    print ("Antallet er større end 10")

Dette program beder brugeren om et tal og kontrollerer, om det er større end 10. Hvis det er tilfældet, returnerer det de relevante oplysninger. For eksempel, hvis brugeren indtaster tallet 5, så slutter programmet simpelthen, og det er det.

Men hvis du angiver tallet 100, så vil tolken forstå, at det er mere end ti, og rapportere det.

OBS! I vores tilfælde, hvis betingelsen er falsk, stopper programmet, fordi der ikke gives kommandoer efter instruktionen.

Der er kun én kommando i ovenstående kode. Men der er mange flere af dem. Det eneste krav er at indrykke.

Lad os nu analysere denne rækkefølge af kommandoer.

tal = int(input(“Skriv et tal: “))

hvis nummer > 10:

    print(“første linje”)

    print(“anden linje”)

    print ("tredje linje")

print("Linjen, der udføres, uanset det indtastede antal")

print ("Afslut ansøgning")

Prøv at gætte, hvad outputtet vil være, hvis du indtaster værdierne 2, 5, 10, 15, 50.

Som du kan se, hvis tallet indtastet af brugeren er mere end ti, så udskrives tre linjer + en med teksten "Kør hver gang ..." og en "Afslut", og hvis mindre end ti, så kun én, med en anden tekst. Kun linje 3,4,5 vil blive udført, hvis det er sandt. De sidste to linjer vil dog blive skrevet uanset hvilket nummer brugeren angiver.

Hvis du bruger sætningerne direkte i konsollen, bliver resultatet anderledes. Tolken tænder øjeblikkeligt for multi-line mode, hvis der efter at have specificeret verifikationskriteriet trykkes på Enter.

Antag, at vi har skrevet følgende rækkefølge af kommandoer.

>>>

>>> n = 100

>>> hvis n > 10:

...

Derefter vil vi se, at >>> er blevet erstattet af ellipse. Det betyder, at multiline input-tilstanden er aktiveret. Med enkle ord, hvis du trykker på Enter, vil du blive overført til input på anden fase af instruktionen. 

Og for at forlade denne blok skal du tilføje endnu en konstruktion til blokken if.

>>>

>>> n = 100

>>> hvis n > 10:

… print(«nv 10»)

...

Hvis betingelsen ikke er sand, afsluttes programmet. Dette er et problem, da brugeren kan opfatte et sådant program som værende lukket på grund af en fejl. Derfor er det nødvendigt at give feedback til brugeren. Til dette bruges et link hvis ellers.

udtryksoperatør hvis ellers

Denne operator giver dig mulighed for at implementere et link: hvis udtrykket matcher en bestemt regel, udfør disse handlinger, og hvis ikke, så andre. Det vil sige, at det giver dig mulighed for at opdele programmets flow i to veje. Syntaksen er intuitiv:

hvis tilstand:

    # hvis blok

    erklæring 1

    erklæring 2

    og så videre

andet:

    # anden blok

    erklæring 3

    erklæring 4

    og så videre:

Lad os forklare, hvordan denne operatør fungerer. Først udføres standardsætningen i tråden taks, tjekker om det passer betingelse "sandt eller falsk". Yderligere handlinger afhænger af resultaterne af kontrollen. Hvis det er sandt, udføres den instruktion, der er i rækkefølgen af ​​instruktioner efter betingelsen, direkte. taks, hvis det er falsk, så andet

På denne måde kan du håndtere fejl. For eksempel skal brugeren indtaste en radius. Det kan naturligvis kun være et tal med et plustegn, eller det er en nulværdi. Hvis det er mindre end 0, skal du sende en besked, der beder dig om at indtaste et positivt tal. 

Her er koden, der implementerer denne opgave. Men der er en fejl her. Prøv at gætte hvilken. 

radius = int(input(“Indtast radius: “))

hvis radius >= 0:

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

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

    andet:

        print(“Indtast venligst et positivt tal”)

Fejl ved uoverensstemmelse med indrykning. Hvis og andet skal placeres uden dem eller med samme antal af dem (afhængigt af om de er indlejret eller ej).

Lad os give en anden use case (hvor alt vil være korrekt med operatørjustering) – et applikationselement, der kontrollerer en adgangskode.

password = input(“Indtast adgangskode:“)

hvis adgangskode == «sshh»:

    print ("Velkommen")

andet:

    print ("Adgang nægtet")

Denne instruktion springer personen videre, hvis adgangskoden er sshh. Hvis der er en anden kombination af bogstaver og tal, viser den meddelelsen "Adgang nægtet".

statement-udtryk hvis-elif-else

Kun hvis flere betingelser ikke er sande, udføres sætningen, der er i blokken. andet. Dette udtryk fungerer sådan her.

hvis betingelse_1:

    # hvis blok

    erklæring

    erklæring

    mere udsagn

elif tilstand_2:

    # første elif blok

    erklæring

    erklæring

    mere udsagn

elif tilstand_3:

    # anden elif blok

    erklæring

    erklæring

    mere udsagn

...

andet

    erklæring

    erklæring

    mere udsagn

Du kan angive et hvilket som helst antal yderligere betingelser.

Indlejrede udsagn

En anden måde at implementere flere betingelser på er at indsætte yderligere tilstandstjek i if-blokken.

Operatør if inde i en anden tilstandsblok

gre_score = int(input(“Indtast din nuværende kreditgrænse”))

per_grad = int(input(“Indtast din kreditvurdering:“))

hvis per_grad > 70:

    # ydre hvis blok

        hvis gre_score > 150:

            # indre hvis blok

    print(“Tillykke, du har modtaget et lån”)

andet:

    print ("Beklager, du er ikke berettiget til et lån")

Dette program udfører en kreditvurderingskontrol. Hvis det er mindre end 70, rapporterer programmet, at brugeren ikke er berettiget til kredit. Hvis den er større, udføres en anden kontrol for at se, om den aktuelle kreditgrænse er større end 150. Hvis ja, vises en meddelelse om, at lånet er udstedt.

Hvis begge værdier er falske, vises en meddelelse om, at brugeren ikke har mulighed for at få et lån. 

Lad os nu omarbejde programmet lidt.

gre_score = int(input(“Indtast nuværende grænse:“))

per_grad = int(input(“Indtast kreditscore:“))

hvis per_grad > 70:

    hvis gre_score > 150:

        print(“Tillykke, du har modtaget et lån”)

    andet:

        print ("Din kreditgrænse er lav")

andet:

    print ("Beklager, du er ikke berettiget til kredit")

Selve koden er meget ens, men indlejret if giver også en algoritme, hvis betingelsen fra den viser sig at være falsk. Det vil sige, at grænsen på kortet er utilstrækkelig, men kredithistorikken er god, meddelelsen "Du har en lav kreditvurdering" vises.

if-else sætning inde i en betingelse andet

Lad os lave et andet program, der bestemmer en elevs karakter baseret på testresultater.

score = int(input(“Indtast din score:“))

hvis score >= 90:

    print(“Fantastisk! Din karakter er A”)

andet:

    hvis score >= 80:

print("Fantastisk! Din karakter er B")

    andet:

hvis score >= 70:

    print("Godt! Din karakter er C")

andet:

    hvis score >= 60:

print(“Din karakter er D. Det er værd at gentage materialet.”)

    andet:

print ("Du bestod ikke eksamen")

Ansøgningen tjekker først, om scoren er større end eller lig med 90. Hvis ja, returnerer den en A-karakter. Hvis denne betingelse er falsk, udføres efterfølgende kontroller. Vi ser, at algoritmen er næsten den samme ved første øjekast. Så i stedet for at tjekke ind andet bedre at bruge en kombination hvis-elif-else.

Altså operatøren if udfører en meget vigtig funktion - den sørger for, at visse stykker kode kun udføres, hvis der er behov for det. Det er umuligt at forestille sig programmering uden det, fordi selv de enkleste algoritmer kræver gafler som "hvis du går til venstre, vil du finde det, og hvis du går til højre, så skal du gøre det og det."

Giv en kommentar