Voorwaardelijke if-instructie in Python. Syntaxis, else/elif-blokken, voorbeelden

Tijdens het leren programmeren is het vaak nodig om programma's te maken die in het echte leven niet zo eenvoudig zijn toe te passen. U hoeft immers af en toe instructies alleen onder bepaalde voorwaarden op te volgen. Om dit in het programma te kunnen implementeren hebben alle talen control statements. Met hun hulp kunt u de stroom van code-uitvoering regelen, lussen maken of bepaalde acties alleen uitvoeren als aan een bepaalde voorwaarde wordt voldaan.

Vandaag zullen we het hebben over de if-verklaring, die de huidige situatie controleert op een bepaalde aandoening en op basis van deze informatie beslissingen neemt over verdere acties.

Soorten controleverklaringen

In het algemeen is if niet de enige instructie die de stroom van een programma regelt. Evenals hij zelf onderdeel kan zijn van een grotere keten van operators.

Er zijn ook lussen en instructies die het uitvoeringsproces regelen. Vandaag zullen we het alleen hebben over de voorwaardelijke operator en de ketens waarin deze kan deelnemen.

Bij programmeren bestaat er zoiets als vertakking. Precies dit betekent een reeks opdrachten die alleen wordt uitgevoerd als aan een bepaalde voorwaarde wordt voldaan. De criteria zelf kunnen verschillen:

  1. Gelijkheid van een variabele tot een bepaalde waarde.
  2. Het uitvoeren van een specifieke actie.
  3. Applicatiestatus (samengevouwen of niet).

Het spectrum kan veel groter zijn. Voorwaardelijke verklaringen zijn er in verschillende soorten:

  1. Met één tak. Dat wil zeggen dat er één controle wordt uitgevoerd, waardoor bepaalde acties worden uitgevoerd.
  2. Met twee of meer takken. Als criterium 1 waar is, controleer dan criterium 2. Als het waar is, controleer dan 3. En voer dus zoveel controles uit als nodig is.
  3. Met een aantal voorwaarden. Alles is hier eenvoudig. De tolk controleert op meerdere voorwaarden of op één ervan.

als verklaring

De structuur van het if-statement is in alle talen gelijk. In Python is de syntaxis echter enigszins anders dan alle andere:

indien voorwaarde:

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

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

<nieuw bericht>

Eerst wordt de operator zelf aangegeven, waarna de voorwaarde wordt geschreven waaronder hij gaat werken. De voorwaarde kan waar of onwaar zijn.

Dit wordt gevolgd door een blok met opdrachten. Als het onmiddellijk volgt op een criterium waaraan moet worden voldaan, wordt de bijbehorende reeks opdrachten een if-blok genoemd. Je kunt er een willekeurig aantal commando's in gebruiken.

Opgelet! De inspringing binnen alle if-blokopdrachten moet dezelfde grootte hebben. De blokgrenzen worden bepaald door de streepjes. 

Volgens de taaldocumentatie is de inspringing 4 spaties. 

Hoe werkt deze operator? Wanneer de interpreter het if-woord ziet, controleert hij de uitdrukking onmiddellijk aan de hand van de door de gebruiker opgegeven criteria. Is dit het geval, dan gaat hij op zoek naar instructies en volgt deze op. Anders worden alle opdrachten uit dit blok overgeslagen.

Als een instructie na de voorwaarde niet is ingesprongen, wordt deze niet behandeld als een if-blok. In onze situatie is deze regel . Daarom wordt deze regel, ongeacht het resultaat van de controle, uitgevoerd.

Hier is een codefragment voor een voorbeeld van hoe deze operator werkt.

getal = int(input(“Vul een getal in: “))

indien getal > 10:

    print ("Het getal is groter dan 10")

Dit programma vraagt ​​de gebruiker om een ​​getal en controleert of het groter is dan 10. Als dat het geval is, wordt de juiste informatie geretourneerd. Als de gebruiker bijvoorbeeld het cijfer 5 invoert, wordt het programma gewoon beëindigd, en dat is alles.

Maar als u het getal 100 opgeeft, zal de tolk begrijpen dat het meer dan tien is en dit rapporteren.

Opgelet! In ons geval, als de voorwaarde onwaar is, stopt het programma, omdat er geen commando's worden gegeven na de instructie.

Er is slechts één commando in de bovenstaande code. Maar er zijn er veel meer. De enige vereiste is inspringen.

Laten we nu deze reeks opdrachten analyseren.

getal = int(input(“Schrijf een getal: “))

indien getal > 10:

    print(“eerste regel”)

    print(“tweede regel”)

    print(“derde regel”)

print ("De regel die wordt uitgevoerd, ongeacht het ingevoerde nummer")

print(“Beëindig aanvraag”)

Probeer te raden wat de uitvoer zal zijn als u de waarden 2, 5, 10, 15, 50 invoert.

Zoals u kunt zien, als het aantal dat door de gebruiker is ingevoerd meer dan tien is, worden er drie regels uitgevoerd + één met de tekst "Elke keer uitvoeren ..." en één "Einde", en indien minder dan tien, dan slechts één, met een andere tekst. Alleen regels 3,4,5 worden uitgevoerd als ze waar zijn. De laatste twee regels worden echter geschreven, ongeacht het nummer dat de gebruiker opgeeft.

Als u de instructies rechtstreeks in de console gebruikt, is het resultaat anders. De tolk schakelt onmiddellijk de meerlijnige modus in als, na het specificeren van het verificatiecriterium, op Enter drukt.

Stel dat we de volgende reeks opdrachten hebben geschreven.

>>>

>>> n = 100

>>> indien n > 10:

...

Daarna zullen we zien dat >>> is vervangen door ellips. Dit betekent dat de multiline-invoermodus is ingeschakeld. In eenvoudige bewoordingen, als u op Enter drukt, wordt u doorgestuurd naar de invoer van de tweede fase van de instructie. 

En om dit blok te verlaten, moet je nog een constructie aan het blok toevoegen if.

>>>

>>> n = 100

>>> indien n > 10:

… afdrukken(«nv 10»)

...

Als de voorwaarde niet waar is, eindigt het programma. Dit is een probleem, aangezien de gebruiker kan zien dat een dergelijk programma is afgesloten vanwege een storing. Daarom is het noodzakelijk om feedback te geven aan de gebruiker. Hiervoor wordt een link gebruikt als-anders.

expressie-operator als-anders

Met deze operator kunt u een koppeling implementeren: als de uitdrukking overeenkomt met een bepaalde regel, voer dan deze acties uit, en zo niet, dan andere. Dat wil zeggen, het stelt u in staat om de stroom van het programma in twee wegen te verdelen. De syntaxis is intuïtief:

indien voorwaarde:

    # als blok

    verklaring 1

    verklaring 2

    enzovoort

anders:

    # anders blok

    verklaring 3

    verklaring 4

    enzovoort:

Laten we uitleggen hoe deze operator werkt. Eerst wordt de standaardopdracht uitgevoerd in de thread taxus, controleren of het overeenkomt voorwaarde "waar of niet waar". Verdere acties zijn afhankelijk van de resultaten van de controle. Indien waar, wordt de instructie die in de reeks instructies staat die op de voorwaarde volgt, direct uitgevoerd. taxus, als het onwaar is, dan anders

Zo ga je om met fouten. De gebruiker moet bijvoorbeeld een straal invoeren. Uiteraard kan het alleen een getal met een plusteken zijn, of het is een null-waarde. Als het minder dan 0 is, moet u een bericht verzenden waarin u wordt gevraagd een positief getal in te voeren. 

Hier is de code die deze taak implementeert. Maar er is hier één fout. Probeer te raden welke. 

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

als straal >= 0:

    print ("Omtrek =", 2 * 3.14 * straal)

    print(“Gebied =“, 3.14 * straal ** 2)

    anders:

        print(“Voer een positief getal in”)

Inspringing komt niet overeen. Als en anders moeten zonder of met hetzelfde aantal worden gelokaliseerd (afhankelijk van of ze genest zijn of niet).

Laten we nog een use-case geven (waarbij alles correct zal zijn met uitlijning van de operator) - een applicatie-element dat een wachtwoord controleert.

wachtwoord = invoer ("Voer wachtwoord in: ")

if wachtwoord == «sshh»:

    print(“Welkom”)

anders:

    print ("Toegang geweigerd")

Deze instructie slaat de persoon verder over als het wachtwoord sshh is. Als er een andere combinatie van letters en cijfers is, wordt het bericht "Toegang geweigerd" weergegeven.

statement-expressie if-elif-else

Alleen als meerdere voorwaarden niet waar zijn, wordt de instructie die in het blok staat uitgevoerd. anders. Deze uitdrukking werkt als volgt.

indien voorwaarde_1:

    # als blok

    verklaring

    verklaring

    meer verklaring

elifvoorwaarde_2:

    # eerste elif-blok

    verklaring

    verklaring

    meer verklaring

elifvoorwaarde_3:

    # tweede elif blok

    verklaring

    verklaring

    meer verklaring

...

anders

    verklaring

    verklaring

    meer verklaring

U kunt een onbeperkt aantal aanvullende voorwaarden opgeven.

Geneste uitspraken

Een andere manier om meerdere voorwaarden te implementeren, is door extra voorwaardecontroles in het if-blok in te voegen.

Operator if binnen een ander conditieblok

gre_score = int(input(“Vul uw huidige kredietlimiet in”))

per_grad = int(input(“Voer uw kredietwaardigheid in: “))

indien per_grad > 70:

    # buitenste als blok

        indien gre_score > 150:

            # binnen als blok

    print ("Gefeliciteerd, u heeft een lening ontvangen")

anders:

    print(“Sorry, u komt niet in aanmerking voor een lening”)

Dit programma voert een kredietwaardigheidscontrole uit. Als het minder dan 70 is, meldt het programma dat de gebruiker niet in aanmerking komt voor tegoed. Als deze groter is, wordt een tweede controle uitgevoerd om te zien of de huidige kredietlimiet groter is dan 150. Zo ja, dan wordt een bericht weergegeven dat de lening is verstrekt.

Als beide waarden niet waar zijn, wordt een melding weergegeven dat de gebruiker geen mogelijkheid heeft om een ​​lening te krijgen. 

Laten we dat programma nu een beetje herwerken.

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

per_grad = int(input(“Voer credit score in: “))

indien per_grad > 70:

    indien gre_score > 150:

        print ("Gefeliciteerd, u heeft een lening ontvangen")

    anders:

        print ("Uw kredietlimiet is laag")

anders:

    print ("Sorry, u komt niet in aanmerking voor krediet")

De code zelf lijkt erg op elkaar, maar is genest if biedt ook een algoritme voor het geval de voorwaarde ervan onwaar blijkt te zijn. Dat wil zeggen, de limiet op de kaart is onvoldoende, maar de kredietgeschiedenis is goed, het bericht "U heeft een lage kredietwaardigheid" wordt weergegeven.

if-else-instructie in een voorwaarde anders

Laten we een ander programma maken dat het cijfer van een student bepaalt op basis van testscores.

score = int(input(“Voer uw score in: “))

als score >= 90:

    print ("Geweldig! Je cijfer is A")

anders:

    als score >= 80:

print ("Geweldig! Je cijfer is B")

    anders:

als score >= 70:

    print ("Goed! Je cijfer is C")

anders:

    als score >= 60:

print ("Je cijfer is D. Het is de moeite waard om het materiaal te herhalen.")

    anders:

print ("Je bent niet geslaagd voor het examen")

De applicatie controleert eerst of de score groter is dan of gelijk is aan 90. Zo ja, dan wordt een A-cijfer geretourneerd. Als deze voorwaarde onwaar is, worden volgende controles uitgevoerd. We zien dat het algoritme op het eerste gezicht bijna hetzelfde is. Dus in plaats van binnen te kijken anders beter om een ​​combinatie te gebruiken als-elif-anders.

Dus de operator if vervult een zeer belangrijke functie - het zorgt ervoor dat bepaalde stukjes code alleen worden uitgevoerd als daar behoefte aan is. Het is onmogelijk om programmeren zonder voor te stellen, omdat zelfs de eenvoudigste algoritmen vorken nodig hebben zoals "als je naar links gaat, zul je het vinden, en als je naar rechts gaat, dan moet je dit en dat doen."

Laat een reactie achter