Podmínky 3: if
Příkaz if
tvoří páteř rozhodování ve většině programovacích jazyků. Umožňuje vykonat určité příkazy v našem programu podle toho, zda je podmínka splněna či nikoliv.
Základní použití příkazu ‘if’
Úplně nejjednodušeji by se příkaz if
dal použít takto:
# podmínka if, ukázka
if True:
print("Text se vypíše.")
print("Protože za if je True")
print("Text se vypíše vždy.")
if False:
print("Tento text se nikdy nevypíše.")
print("Text se vypíše vždy.")
Tento příkaz je zcela neužitečný, ale ukazuje v nejjednodušší podobě, co příkaz if
dělá. Pokud se za if
nachází výraz, který je True
, vykoná se kód na dalších řádcích. Důležité je, aby tyto řádky byly odsazené tabulátorem nebo čtyřmi mezerami, čímž Pythonu říkáme, že patří do větve podmínky. Často se zapomíná na dvojtečku na konci řádku s if
. Mně se to stává pořád!
Pokud podmínka v příkazu if
není splněna (tj. vyhodnotí se jako False
), odsazený blok kódu pod příkazem if
se přeskočí a program pokračuje za ním.
Použití logických výrazů s ‘if’
Samozřejmě je běžnější používat za if
nějaký logický výraz:
# podmínka if, ukázka
if 5 > 2:
print("5 je větší než 2")
Tok kódu se v tomto případě větví podle toho, zda je podmínka splněna.
Práce s proměnnými
Běžně používáme proměnné pro dynamické rozhodování:
# podmínka if, ukázka
vek = int(input("Kolik je ti let? "))
if vek >= 18:
print("Jsi dospělý.")
Podmínek může být samozřejmě více. Zde je příklad s více podmínkami k zopakování logických operátorů:
# podmínka if, ukázka
cislo1 = 5
cislo2 = 5
if cislo1 > cislo2:
print("cislo1 je větší než cislo2")
if cislo1 < cislo2:
print("cislo1 je menší než cislo2")
if cislo1 == cislo2:
print("cislo1 je rovno cislo2")
if cislo1 <= cislo2:
print("cislo1 je menší nebo rovno cislo2")
if cislo1 >= cislo2:
print("cislo1 je větší nebo rovno cislo2")
if cislo1 != cislo2:
print("cislo1 je nerovno cislo2")
Hra hádání čísla
Teď už víme dost, abychom naprogramovali jednoduchou hru:
# hra hádání čísla
tajne_cislo = 7
print("Myslím si číslo od 1 do 10. Uhádneš ho?")
print("Máš 3 pokusy.")
pokus = 1
tip = int(input(f"{pokus}. pokus: "))
if tip == tajne_cislo:
print(f"Správně! Uhádl jsi to na {pokus}. pokus.")
exit() # ukončení programu
pokus += 1
tip = int(input(f"{pokus}. pokus: "))
if tip == tajne_cislo:
print(f"Správně! Uhádl jsi to na {pokus}. pokus.")
exit() # ukončení programu
pokus += 1
tip = int(input(f"{pokus}. pokus: "))
if tip == tajne_cislo:
print(f"Správně! Uhádl jsi to na {pokus}. pokus.")
exit() # ukončení programu
Tato hra pro tebe asi nebude moc zábavná, když znáš tajné číslo. Ale místo řádku s tajne_cislo
můžeš použít funkci randint
z modulu random
, která vybere náhodné číslo.
#tajne_cislo = 7
from random import randint
tajne_cislo = randint(1, 10)
Tento kód vlož místo řádku s tajne_cislo = 7
a hra bude mnohem zábavnější. Víc o modulech a funkcích se dozvíš v dalších lekcích.
Logické operátory: AND, OR, NOT
Podmínky jsou skvělé, ale co když potřebujeme složitější logiku? Pro logické operace existují tři základní operátory: and
, or
a not
. Jsou stejně důležité pro logické proměnné jako sčítání a odčítání pro číselné proměnné.
Operátor AND
Operátor and
vrací True
pouze, pokud jsou pravdivé oba výrazy na jeho stranách.
# AND
if True and True:
print("vypíše se")
if True and False:
print("nevypíše se")
if False and True:
print("nevypíše se")
if False and False:
print("nevypíše se")
Operátor OR
Operátor or
vrací True
, pokud je True
alespoň jeden z výrazů.
# OR
if True or True:
print("vypíše se")
if True or False:
print("vypíše se")
if False or True:
print("vypíše se")
if False or False:
print("nevypíše se")
Operátor NOT
Operátor not
mění hodnotu True
na False
a False
na True
.
# NOT
if not True:
print("nevypíše se")
if not False:
print("vypíše se")
Použití logických operátorů
Díky příkazu and
můžeme vyřešit složitější problémy, které by jinak vyžadovaly více podmínek.
# použití logických operátorů
pocet_bodu = 10
if pocet_bodu < 10:
print("Nedostatečný počet bodů.")
if pocet_bodu >= 10 and pocet_bodu < 20:
print("Postačující počet bodů")
if pocet_bodu >= 20 and pocet_bodu < 30:
print("Dobrý počet bodů")
if pocet_bodu >= 30:
print("Výborný počet bodů")
Více příkazů pro lepší čitelnost
Zde jen drobná poznámka. Mnoho příkazů existuje pro lepší čitelnost kódu. Například bez and
bychom museli napsat:
if pocet_bodu >= 20:
if pocet_bodu < 30:
print("Dobrý počet bodů")
Zde jsou dva vnořené příkazy if
. V porovnání s předchozím kódem jde o komplikovanější zápis.
if pocet_bodu >= 20 and pocet_bodu < 30:
print("Dobrý počet bodů")
Příkazů, které zlepšují čitelnost kódu nebo usnadňují jeho psaní, je většina. Kvalita kódu je důležitá, protože kód bude číst nejenom počítač, ale i další programátoři.
Kontrolní otázky
Pokud to dokážeš vysvětlit někomu jinému vlastními slovy, jsi na dobré cestě tomu rozumět. Dokážeš odpovědět na tyto otázky?
- Jaké je hlavní účel příkazu
if
v programování? - V jakých scénářích byste použili podmíněné příkazy typu
if
? - Jaký význam má v jazyce Python odsazení, zejména v kontextu příkazů
if
? - Který symbol se používá na konci podmínky
if
? - Popiš funkci operátoru
and
. Kdy vrací operátorTrue
? - Jak se liší operátor
or
od operátoruand
? - Jaká je funkce operátoru
not
? - Vzhledem k úryvku kódu:
Jaký bude výstup tohoto kódu?age = 15 if age >= 18: print("Dospělý")
- Uvažujme následující kód:
Vypíše se zpráva “Obě podmínky jsou pravdivé”? Proč ano nebo proč ne?x = 10 y = 20 if x > 5 and y < 30: print("Obě podmínky jsou pravdivé")
- Umíte vnořovat příkazy
if
? Pokud ano, uveďte stručný příklad.
Kvízy
Příkaz if
lze použít k rozhodování v programu.
- Pravda
- Nepravda
Operátor and
vrací True
pouze tehdy, pokud jsou oba jeho operandy True
.
- Pravda
- Napravda
Operátor or
vrací True
, pokud je alespoň jeden z jeho operandů True
.
- Pravda
- Napravda
Cvičení
Cvičení 1:
Napište program v jazyce Python, který se zeptá uživatele na číslo a poté vypíše řetězec označující, zda je toto číslo kladné nebo záporné.
Cvičení 2:
Napište program v jazyce Python, který se zeptá uživatele na jeho věk a poté mu sdělí, zda je nezletilý (mladší 18 let), dospělý (18 až 64 let) nebo senior (65 let a více).
Cvičení 3:
Napište program v jazyce Python, který se uživatele zeptá na známku (od 0 do 100). Poté by měl vypsat, zda známka odpovídá “A” (90 až 100), “B” (80 až 89), “C” (70 až 79), “D” (60 až 69) nebo “F” (pod 60).
Cvičení 4:
Uprav hru hádání čísla tak, aby se po uhodnutí čísla program ukončil.
Cvičení 5:
Uprav hru hádání čísla tak, aby se uživatel dozvěděl zda je jeho tip větší nebo menší než tajné číslo.
Cvičení 6:
Napište program v jazyce Python, který se uživatele zeptá na číslo a řekne mu, zda je sudé nebo liché.