Spoustu věcí v kódu chceme provádět, jen pokud jsou splněny určité podmínky. Proto má Python podmíněné příkazy.
Zkusíme napsat program, který ověřuje tajné heslo.
Tenhle program napíše True
, když zadáš slovo čokoláda
:
heslo = input('Zadej heslo: ')
print(heslo == 'čokoláda')
Vypsání True
ale není moc zajímavé.
Lepší program by dělal tohle:
Anglicky se „když“ řekne if. A to je i jméno Pythoního příkazu. Používá se takhle:
heslo = input('Zadej heslo: ')
if heslo == 'čokoláda':
print('Správně! Račte vstoupit.')
Podmíněný příkaz začíná if
, pokračuje podmínkou (třeba porovnáním)
a končí dvojtečkou.
Po řádkem s if
je příkaz odsazený – na začátku řádku jsou 4 mezery.
Podle toho Python pozná, že tuhle část programu má provést, jen když je podmínka pravdivá.
Ulož a spusť:
(venv) $ python python_intro.py
Zadej heslo: čokoláda
Správně! Můžeš vstoupit.
(venv) $ python python_intro.py
Zadej heslo: sezam
V předchozím příkladu byl kód proveden pouze v případě, že podmínka byla splněna. Ještě lepší program by ale:
K tomu má Python příkaz else
– „jinak“:
heslo = input('Zadej heslo: ')
if heslo == 'čokoláda':
print('Správně! Račte vstoupit.')
else:
print('POZOR! POZOR!')
print('NEOPRÁVNĚNÝ VSTUP!')
Funuje to?
Občas se stane, že se program musí rozhodnout mezi více možnostmi.
K tomu slouží příkaz elif
, zkratka znglického else if – „jinak, pokud“.
Napišme program, který okomentuje hlasitost hudby:
V Pythonu:
hlasitost = int(input('Jaká je nastavená hlasitost rádia? '))
if hlasitost < 20:
print("Je to dost potichu.")
elif hlasitost < 40:
print("Jako hudba v pozadí dobré.")
elif hlasitost < 60:
print("Skvělé, slyším všechny detaily.")
elif hlasitost < 80:
print("Dobré na party.")
elif hlasitost < 100:
print("Trochu moc nahlas!")
else:
print("Krvácí mi uši!")
(venv) $ python python_intro.py
Jaká je nastavená hlasitost rádia? 28
Jako hudba v pozadí dobré.
Všimni si, že se vybere vždycky jedna alternativa.
Když zadáš 28
, Python se dostane k hlasitost < 40
, vypíše
příslušnou hlášku a další možnosti přeskočí.
Co jsi viděl/a v této lekci?
if
apod..