Villkorlig if-sats i Python. Syntax, else/elif-block, exempel

I processen att lära sig programmera är det ofta nödvändigt att skapa program som inte är så lätta att tillämpa i verkligheten. När allt kommer omkring, från tid till annan måste du följa instruktionerna endast under vissa förhållanden. För att kunna implementera detta i programmet har alla språk kontrollsatser. Med deras hjälp kan du kontrollera flödet av kodexekvering, skapa loopar eller utföra vissa åtgärder endast när ett visst villkor är sant.

Idag kommer vi att prata om if-utlåtandet, som kontrollerar den aktuella situationen för ett visst tillstånd, och baserat på denna information, fattar beslut om ytterligare åtgärder.

Typer av kontrollutlåtanden

I allmänhet är if inte det enda uttalandet som styr flödet av ett program. Liksom han själv kan vara en del av en större kedja av operatörer.

Det finns också loopar och uttalanden som styr processen för dess exekvering. Idag kommer vi bara att prata om den villkorade operatören och de kedjor som den kan delta i.

Inom programmering finns det något som heter förgrening. Det är just detta som betyder en sekvens av kommandon som exekveras endast om ett visst villkor är sant. Kriterierna i sig kan vara olika:

  1. Likhet mellan en variabel och ett visst värde.
  2. Utföra en specifik åtgärd.
  3. Applikationsstatus (kollapserad eller inte).

Spektrum kan vara mycket större. Villkorliga uttalanden finns i flera typer:

  1. Med en gren. Det vill säga en enda kontroll utförs, som ett resultat av vilken vissa åtgärder utförs.
  2. Med två eller flera grenar. Om kriterium 1 är sant, kontrollera då kriterium 2. Om det är sant, kontrollera då 3. Och så, utför så många kontroller som krävs.
  3. Med flera förutsättningar. Allt är enkelt här. Tolken kontrollerar flera tillstånd eller ett av dem.

if uttalande

Strukturen för if-satsen är liknande på alla språk. Men i Python är dess syntax något annorlunda än alla andra:

om tillstånd:

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

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

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

Först deklareras operatören själv, varefter villkoret under vilket det börjar arbeta skrivs. Villkoret kan vara antingen sant eller falskt.

Detta följs av ett block med kommandon. Om det omedelbart följer ett kriterium som ska uppfyllas, kallas motsvarande sekvens av kommandon ett if-block. Du kan använda valfritt antal kommandon i den.

Observera! Indraget inom alla if-blockkommandon måste vara av samma storlek. Blockgränserna bestäms av indragen. 

Enligt språkdokumentationen är indraget 4 mellanslag. 

Hur fungerar denna operatör? När tolken ser if-ordet kontrollerar den omedelbart uttrycket mot de användarspecificerade kriterierna. Om så är fallet börjar han leta efter instruktioner och följa dem. Annars hoppas alla kommandon från detta block över.

Om ett påstående efter villkoret inte är indraget, behandlas det inte som ett if-block. I vår situation är denna linje . Därför, oavsett resultatet av kontrollen, kommer denna rad att utföras.

Här är ett kodavsnitt för ett exempel på hur den här operatören fungerar.

nummer = int(input(“Ange ett nummer: “))

om nummer > 10:

    print ("Siffran är större än 10")

Det här programmet frågar användaren om ett nummer och kontrollerar om det är större än 10. Om så är fallet returnerar det lämplig information. Till exempel, om användaren anger siffran 5, kommer programmet helt enkelt att avslutas, och det är det.

Men om du anger siffran 100, kommer tolken att förstå att det är mer än tio och rapportera det.

Observera! I vårt fall, om villkoret är falskt, stoppas programmet, eftersom inga kommandon ges efter instruktionen.

Det finns bara ett kommando i ovanstående kod. Men det finns många fler av dem. Det enda kravet är indrag.

Låt oss nu analysera denna sekvens av kommandon.

nummer = int(input("Skriv ett tal: "))

om nummer > 10:

    print(“första raden”)

    print(”andra raden”)

    print(“tredje raden”)

print(”Raden som exekveras, oavsett det angivna antalet”)

print(”Avsluta ansökan”)

Försök att gissa vad resultatet blir om du anger värdena 2, 5, 10, 15, 50.

Som du kan se, om siffran som angetts av användaren är mer än tio, matas tre rader ut + en med texten "Kör varje gång ..." och en "Sluta", och om mindre än tio, då endast en, med en annan text. Endast raderna 3,4,5 kommer att exekveras om det är sant. De två sista raderna kommer dock att skrivas oavsett vilket nummer användaren anger.

Om du använder satserna direkt i konsolen blir resultatet ett annat. Tolken slår omedelbart på multi-line mode om, efter att ha specificerat verifieringskriteriet, tryck på Enter.

Anta att vi har skrivit följande sekvens av kommandon.

>>>

>>> n = 100

>>> om n > 10:

.

Efter det kommer vi att se att >>> har ersatts av ellips. Detta betyder att flerlinjeinmatningsläget är aktiverat. Med enkla ord, om du trycker på Enter, kommer du att överföras till ingången för det andra steget av instruktionen. 

Och för att gå ur detta block måste du lägga till ytterligare en konstruktion till blocket if.

>>>

>>> n = 100

>>> om n > 10:

… print(«nv 10»)

.

Om villkoret inte är sant avslutas programmet. Detta är ett problem, eftersom användaren kan uppfatta att ett sådant program har stängts på grund av ett fel. Därför är det nödvändigt att ge feedback till användaren. För detta används en länk om annat.

uttrycksoperator om annat

Den här operatorn låter dig implementera en länk: om uttrycket matchar en viss regel, utför dessa åtgärder, och om inte, då andra. Det vill säga, det låter dig dela upp programmets flöde i två vägar. Syntaxen är intuitiv:

om tillstånd:

    # om block

    uttalande 1

    uttalande 2

    och så vidare

annan:

    # annat block

    uttalande 3

    uttalande 4

    och så vidare:

Låt oss förklara hur den här operatören fungerar. Först körs standardsatsen i tråden idegran, kolla om det stämmer tillstånd "sant eller falskt". Ytterligare åtgärder beror på resultatet av kontrollen. Om sant, exekveras instruktionen som finns i sekvensen av instruktioner efter villkoret direkt. idegran, om det är falskt, då annars

På så sätt kan du hantera fel. Användaren måste till exempel ange en radie. Uppenbarligen kan det bara vara ett tal med ett plustecken, eller så är det ett nollvärde. Om det är mindre än 0, måste du skicka ett meddelande som ber dig att ange ett positivt tal. 

Här är koden som implementerar denna uppgift. Men det finns ett misstag här. Försök gissa vilken. 

radius = int(input(“Ange radie: “))

om radie >= 0:

    print(“Omkrets = “, 2 * 3.14 * radie)

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

    annan:

        print(”Ange ett positivt tal”)

Fel vid indrag som inte matchar. Om och annat måste placeras utan dem eller med samma antal av dem (beroende på om de är kapslade eller inte).

Låt oss ge ett annat användningsfall (där allt blir korrekt med operatörsjustering) – ett applikationselement som kontrollerar ett lösenord.

lösenord = input("Ange lösenord: ")

om lösenord == «sshh»:

    print ("Välkommen")

annan:

    print(”Åtkomst nekad”)

Denna instruktion hoppar över personen vidare om lösenordet är sshh. Om någon annan kombination av bokstäver och siffror visas, visas meddelandet "Åtkomst nekad".

påstående-uttryck om-elif-annat

Endast om flera villkor inte är sanna, exekveras satsen som finns i blocket. annars. Detta uttryck fungerar så här.

om villkor_1:

    # om block

    meddelandet

    meddelandet

    mer uttalande

elif condition_2:

    # första elifblocket

    meddelandet

    meddelandet

    mer uttalande

elif condition_3:

    # andra elif block

    meddelandet

    meddelandet

    mer uttalande

.

annars

    meddelandet

    meddelandet

    mer uttalande

Du kan ange valfritt antal ytterligare villkor.

Kapslade uttalanden

Ett annat sätt att implementera flera villkor är att infoga ytterligare tillståndskontroller i if-blocket.

Operatör if inuti ett annat tillståndsblock

gre_score = int(input(“Ange din nuvarande kreditgräns”))

per_grad = int(input("Ange din kreditvärdighet: "))

om per_grad > 70:

    # yttre om block

        om gre_score > 150:

            # inre om block

    print(“Grattis, du har fått ett lån”)

annan:

    print ("Tyvärr, du är inte berättigad till ett lån")

Detta program utför en kreditvärdighetskontroll. Om det är mindre än 70 rapporterar programmet att användaren inte är berättigad till kredit. Om den är större görs en andra kontroll för att se om den aktuella kreditgränsen är större än 150. Om ja, visas ett meddelande om att lånet har utfärdats.

Om båda värdena är falska, visas ett meddelande om att användaren inte har möjlighet att få ett lån. 

Låt oss nu omarbeta det programmet lite.

gre_score = int(input(“Ange aktuell gräns:“))

per_grad = int(input(“Ange kreditvärdighet: “))

om per_grad > 70:

    om gre_score > 150:

        print(“Grattis, du har fått ett lån”)

    annan:

        print ("Din kreditgräns är låg")

annan:

    print ("Tyvärr, du är inte berättigad till kredit")

Själva koden är väldigt lik, men kapslad if tillhandahåller också en algoritm om villkoret från den visar sig vara falskt. Det vill säga gränsen på kortet är otillräcklig, men kredithistoriken är bra, meddelandet "Du har låg kreditvärdighet" visas.

if-else uttalande i ett villkor annars

Låt oss göra ett annat program som bestämmer en elevs betyg baserat på testresultat.

score = int(input("Ange din poäng: "))

om poäng >= 90:

    print(”Bra! Ditt betyg är A”)

annan:

    om poäng >= 80:

print(”Bra! Ditt betyg är B”)

    annan:

om poäng >= 70:

    print("Bra! Ditt betyg är C")

annan:

    om poäng >= 60:

print(”Ditt betyg är D. Det är värt att upprepa materialet.”)

    annan:

print(”Du misslyckades på provet”)

Ansökan kontrollerar först om poängen är högre än eller lika med 90. Om ja, returnerar den ett A-betyg. Om detta villkor är falskt, utförs efterföljande kontroller. Vi ser att algoritmen är nästan densamma vid första anblicken. Så istället för att kolla inuti annars bättre att använda en kombination om-elif-annat.

Operatören alltså if utför en mycket viktig funktion – den ser till att vissa delar av koden exekveras endast om det finns ett behov av det. Det är omöjligt att föreställa sig programmering utan det, eftersom även de enklaste algoritmerna kräver gafflar som "om du går till vänster kommer du att hitta det, och om du går till höger måste du göra det och det."

Kommentera uppropet