Podmínky

Pokud potřebujeme vykonat určitou část kódu pouze pokud je splněna nějaká podmínka (tedy nějaký výraz je vyhodnocený jako pravivý - True), potřebujeme podmínky.

Základní konstrukce podmínky je

if výraz:
    co se  stát

Pokud chceme přidat část, která se má splnit pokud podmínka neplatí, přidáme blok else:

if výraz:
    co se  stát
else:
    co se  stát v opačním případě

Často může nastat potřeba řetězení více podmínek - za klíčové slovo else můžeme přidat okamžitě další if, ale Python nám umožňuje tento zápis zkrátit:

if výraz:
    co se  stát, když je výraz pravda
elif jiný_výraz:
    co se  stát, když platí něco jiného
elif další_výraz:
    takto můžeme pokračovat  do nekonečna
else:
    konečný výchozí kód, který je vykonán, pokud vše ostatní selže

Podmíněné příkazy lze samozřejmě zanořovat

if výraz:
    if další_výraz:
        co se  stát, stane se
    else:
        něco jiného se stane
else:
    původní podmínka nesplněna

Zkusíme napsat program, který se na začátku zeptá na věk za davatele a po té nabídne vhodné občerstvení:

vek = int(input('Kolik ti je let? '))

if vek >= 150:
    print('A ze kterépak jsi planety?')
elif vek >= 18:
    print('Můžeme nabídnout: víno, cider, nebo vodku.')
elif vek >= 1:
    print('Můžeme nabídnout: mléko, čaj, nebo vodu')
elif vek >= 0:
    print('Sunar už bohužel došel.')
else:
    print('Návštěvníky z budoucnosti tady nevidíme rádi.')

Ucelené bloky v Pythonu

Určitě jste si všimli, že na rozdíl od jiných populárních jazyků Python nepoužívá k vymezení ucelených bloků kódu složené závorky, ale bloky strukturuje pomocí odsazení. A na konci řádků není potřeba dávat znak ; (středník). Je v celku jedno, jestli používáte mezery nebo tabulátory a jestli používáte 4 mezery nebo 2 tabulátory. Různé stupně odsazení dokonce můžete měnit uprostřed programu.

Poznámka

Že něco jde, neznamená, že byste to tak měli dělat. Praxe ukazuje, že používat tabulátory pro odsazení v kódu je zlo - každý textový editor má nastavenu jinou šířku tabulátoru.

Jako nečastější se v Pythonních programech používají pro odazení bloku kódu 4 mezery. Je dobrou praxí, nastavit v textovém editoru šířku tabulátoru na 4 znaky a automatické nahrazování tabulátorů za mezery.

Poprvé se nám bloky kódu objevují právě v podmínkách, budeme se s nimi ale setkávat i dále.

Pro srovnání kód v jazyce JavaScript by s podmínkami a bloky kódu vypadal asi takto:

if (a == 1) {
    console.log("'a' je jedna");
} else {
    console.log("'a' není jedna");
}

A to samé v Pythonu

if a == 1:
    print("'a' je jedna")
else:
    print"'a' není jedna")

Vidíte, že je to méně psaní a Python vás nutí k čitelné struktuře kódu.

Jednořádková forma zápisu podmínky if

Programátoři jsou velice lenivý národ a často vytvářejí zkratky, aby ušetřili řádek kódu nebo deset znaků na řádku. Často potřebujeme pouze krátkou formu zápisu podmínky if (z Jazyka C hojne využívaný zápis vysledek = (podminka ? splneno ! nespleno); v Pythonu bohužel neexistuje. Ale jde to:

>>> fruit = 'Apple'
>>> result = True if fruit == 'Apple' else False
>>> print result
True

>>> fruit = 'Pear'
>>> result = True if fruit == 'Apple' else False
>>> print result
False