Podmíněný příkaz if v Pythonu. Syntaxe, bloky else/elif, příklady

V procesu učení programování je často nutné vytvářet programy, které není tak snadné aplikovat v reálném životě. Čas od času se totiž musíte řídit pokyny jen za určitých podmínek. Aby to bylo možné implementovat do programu, všechny jazyky mají řídicí příkazy. S jejich pomocí můžete řídit tok provádění kódu, vytváření smyček nebo provádění určitých akcí pouze tehdy, když je splněna určitá podmínka.

Dnes si povíme o příkazu if, který kontroluje aktuální situaci na určitý stav a na základě těchto informací rozhoduje o dalším postupu.

Typy kontrolních příkazů

Obecně platí, že if není jediným příkazem, který řídí tok programu. Stejně jako on sám může být součástí většího řetězce operátorů.

Existují také smyčky a příkazy, které řídí proces jeho provádění. Dnes budeme mluvit pouze o podmíněném operátoru a řetězcích, kterých se může účastnit.

V programování existuje něco jako větvení. Právě to znamená posloupnost příkazů, která se provádí pouze v případě, že je splněna určitá podmínka. Samotná kritéria se mohou lišit:

  1. Rovnost proměnné k určité hodnotě.
  2. Provedení konkrétní akce.
  3. Stav aplikace (sbalená nebo ne).

Spektrum může být mnohem větší. Podmíněné příkazy existují v několika typech:

  1. S jednou větví. To znamená, že se provádí jediná kontrola, v jejímž důsledku se provádějí určité akce.
  2. Se dvěma a více větvemi. Pokud je kritérium 1 pravdivé, zkontrolujte kritérium 2. Pokud je pravdivé, zkontrolujte 3. A tak proveďte tolik kontrol, kolik je potřeba.
  3. S několika podmínkami. Všechno je zde jednoduché. Tlumočník kontroluje více podmínek nebo jednu z nich.

pokud prohlášení

Struktura příkazu if je podobná ve všech jazycích. V Pythonu se však jeho syntaxe poněkud liší od všech ostatních:

pokud podmínka:

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

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

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

Nejprve se deklaruje samotný operátor, načež se zapíše podmínka, za které začne pracovat. Podmínka může být pravdivá nebo nepravdivá.

Následuje blok s příkazy. Pokud bezprostředně následuje po kritériu, které má být splněno, pak se odpovídající sekvence příkazů nazývá blok if. Můžete v něm použít libovolný počet příkazů.

Pozor! Odsazení ve všech příkazech bloku if musí mít stejnou velikost. Hranice bloku jsou určeny odsazením. 

Podle jazykové dokumentace je odsazení 4 mezery. 

Jak tento operátor funguje? Když interpret uvidí slovo if, okamžitě zkontroluje výraz podle kritérií zadaných uživatelem. Pokud tomu tak je, pak začne hledat pokyny a řídit se jimi. V opačném případě budou všechny příkazy z tohoto bloku přeskočeny.

Pokud příkaz za podmínkou není odsazen, nepovažuje se za blok if. V naší situaci je tato linie . Bez ohledu na výsledek kontroly se tedy tento řádek provede.

Zde je úryvek kódu pro příklad, jak tento operátor funguje.

číslo = int(vstup(“Zadejte číslo:”))

pokud číslo > 10:

    tisk ("Číslo je větší než 10")

Tento program vyzve uživatele k zadání čísla a zkontroluje, zda je větší než 10. Pokud ano, vrátí příslušné informace. Pokud uživatel zadá například číslo 5, tak se program jednoduše ukončí a je to.

Pokud však zadáte číslo 100, tlumočník pochopí, že je to více než deset, a nahlásí to.

Pozor! V našem případě, pokud je podmínka nepravdivá, program se zastaví, protože po instrukci nejsou zadávány žádné příkazy.

Ve výše uvedeném kódu je pouze jeden příkaz. Ale je jich mnohem víc. Jediným požadavkem je odsazení.

Nyní pojďme analyzovat tuto sekvenci příkazů.

číslo = int(input(“Napište číslo:”))

pokud číslo > 10:

    tisk ("první řádek")

    tisk (“druhý řádek”)

    tisk ("třetí řádek")

print("Řádek, který se provede, bez ohledu na zadané číslo")

tisk (“Konec přihlášky”)

Zkuste uhodnout, jaký bude výstup, pokud zadáte hodnoty 2, 5, 10, 15, 50.

Jak vidíte, pokud je číslo zadané uživatelem více než deset, vyjdou tři řádky + jeden s textem „Spustit pokaždé…“ a jeden „Konec“, a pokud je menší než deset, pak pouze jeden s jiný text. Pokud je true, budou provedeny pouze řádky 3,4,5. Poslední dva řádky však budou napsány bez ohledu na to, jaké číslo uživatel zadá.

Pokud použijete příkazy přímo v konzoli, bude výsledek jiný. Překladač okamžitě zapne víceřádkový režim, pokud po zadání ověřovacího kritéria stisknete Enter.

Předpokládejme, že jsme napsali následující posloupnost příkazů.

>>>

>>> n = 100

>>> pokud n > 10:

...

Poté uvidíme, že >>> bylo nahrazeno třemi tečkami. To znamená, že je povolen režim víceřádkového vstupu. Jednoduše řečeno, pokud stisknete Enter, budete převedeni na vstup druhé fáze instrukce. 

A abyste mohli opustit tento blok, musíte do bloku přidat ještě jednu konstrukci if.

>>>

>>> n = 100

>>> pokud n > 10:

… tisk ("nv 10")

...

Pokud podmínka není pravdivá, program končí. To je problém, protože uživatel může takový program vnímat jako ukončený z důvodu selhání. Proto je nutné poskytnout uživateli zpětnou vazbu. K tomu slouží odkaz pokud-jinde.

výrazový operátor pokud-jinde

Tento operátor vám umožňuje implementovat odkaz: pokud výraz odpovídá určitému pravidlu, proveďte tyto akce, a pokud ne, pak jiné. To znamená, že vám umožňuje rozdělit tok programu na dvě cesty. Syntaxe je intuitivní:

pokud podmínka:

    # if block

    výpis 1

    výpis 2

    a tak dále

jiný:

    # další blok

    výpis 3

    výpis 4

    a tak dále:

Pojďme si vysvětlit, jak tento operátor funguje. Nejprve se ve vláknu provede standardní příkaz tis, kontrola, zda se shoduje stav "pravda nebo lež". Další akce závisí na výsledcích kontroly. Pokud je pravda, instrukce, která je v posloupnosti instrukcí následujících za podmínkou, se provede přímo. tis, pokud je to nepravdivé, tak jiný

Tímto způsobem můžete řešit chyby. Uživatel například potřebuje zadat poloměr. Je zřejmé, že to může být pouze číslo se znaménkem plus, nebo je to nulová hodnota. Pokud je menší než 0, musíte vydat zprávu s výzvou k zadání kladného čísla. 

Zde je kód, který implementuje tento úkol. Ale je tu jedna chyba. Zkuste uhodnout který. 

poloměr = int(input(“Zadejte poloměr:“))

pokud poloměr >= 0:

    print(“Obvod = “, 2 * 3.14 * poloměr)

    print(“Plocha = “, 3.14 * poloměr ** 2)

    jiný:

        tisk („Zadejte prosím kladné číslo“)

Chyba nesouladu odsazení. Pokud a jinak musí být umístěny bez nich nebo se stejným počtem (podle toho, zda jsou vnořené nebo ne).

Uveďme další případ použití (kde bude vše v pořádku se zarovnáním operátora) – prvek aplikace, který kontroluje heslo.

heslo = input(“Zadejte heslo: “)

if heslo == «sshh»:

    tisk ("Vítejte")

jiný:

    tisk („Přístup odepřen“)

Tato instrukce přeskakuje osobu dále, pokud je heslo sshh. Pokud je jakákoli jiná kombinace písmen a číslic, zobrazí se zpráva „Přístup odepřen“.

příkaz-výraz if-elif-else

Pouze pokud není splněno několik podmínek, provede se příkaz, který je v bloku. jiný. Tento výraz funguje takto.

if condition_1:

    # if block

    prohlášení

    prohlášení

    více prohlášení

elif condition_2:

    # první elfí blok

    prohlášení

    prohlášení

    více prohlášení

elif condition_3:

    # druhý blok elifů

    prohlášení

    prohlášení

    více prohlášení

...

jiný

    prohlášení

    prohlášení

    více prohlášení

Můžete zadat libovolný počet dalších podmínek.

Vnořené příkazy

Dalším způsobem, jak implementovat více podmínek, je vložit další kontroly podmínek do bloku if.

Operátor if uvnitř jiného bloku podmínek

gre_score = int(input(“Zadejte svůj aktuální kreditní limit”))

per_grad = int(input(“Zadejte své hodnocení: “))

pokud per_grad > 70:

    # vnější blok if

        pokud gre_score > 150:

            # vnitřní blok

    tisk („Blahopřejeme, dostali jste půjčku“)

jiný:

    vytisknout („Je nám líto, nemáte nárok na půjčku“)

Tento program provádí kontrolu bonity. Pokud je nižší než 70, program hlásí, že uživatel nemá nárok na kredit. Pokud je větší, provede se druhá kontrola, zda je aktuální úvěrový limit větší než 150. Pokud ano, zobrazí se zpráva, že úvěr byl vydán.

Pokud jsou obě hodnoty nepravdivé, zobrazí se zpráva, že uživatel nemá možnost získat půjčku. 

Nyní ten program trochu přepracujme.

gre_score = int(input(“Zadejte aktuální limit:“))

per_grad = int(input(“Zadejte kreditní skóre: “))

pokud per_grad > 70:

    pokud gre_score > 150:

        tisk („Blahopřejeme, dostali jste půjčku“)

    jiný:

        tisk („Váš kreditní limit je nízký“)

jiný:

    vytisknout („Je nám líto, nemáte nárok na kredit“)

Samotný kód je velmi podobný, ale vnořený if také poskytuje algoritmus pro případ, že se podmínka z něj ukáže jako nepravdivá. To znamená, že limit na kartě je nedostatečný, ale úvěrová historie je dobrá, zobrazí se zpráva „Máte nízkou bonitu“.

příkaz if-else uvnitř podmínky jiný

Udělejme další program, který určí studentovu známku na základě výsledků testů.

skóre = int(vstup(“Zadejte své skóre:“))

pokud skóre >= 90:

    tisk ("Skvělé! Vaše známka je A")

jiný:

    pokud skóre >= 80:

tisk ("Skvělé! Vaše známka je B")

    jiný:

pokud skóre >= 70:

    tisk („Dobrá! Vaše známka je C“)

jiný:

    pokud skóre >= 60:

tisk („Vaše známka je D. Stojí za to látku zopakovat.“)

    jiný:

tisk („Neuspěl jsi u zkoušky“)

Aplikace nejprve zkontroluje, zda je skóre větší nebo rovno 90. Pokud ano, vrátí známku A. Pokud je tato podmínka nepravdivá, provedou se následné kontroly. Vidíme, že algoritmus je na první pohled téměř stejný. Takže místo kontroly uvnitř jiný je lepší použít kombinaci if-elif-else.

Takže operátor if plní velmi důležitou funkci – zajišťuje, aby se určité části kódu spouštěly pouze v případě potřeby. Bez toho si nelze představit programování, protože i ty nejjednodušší algoritmy vyžadují větve typu „když půjdeš doleva, najdeš to, a když půjdeš doprava, pak musíš udělat tohle a tamto“.

Napsat komentář