Pamatuješ si ještě, co je to operátor?
V domácím projektu jsme si ukázali základní aritmetické operátory.
Přidáme-li jeden další (//), jsou to tyhle:
| Symbol | Příklad | Popis | 
|---|---|---|
+, -, *, / | 
        1 + 1 | 
        Základní aritmetika | 
- | 
        -5 | 
        Negace | 
//; % | 
        7 // 2; 7 % 2 | 
        Dělení se zbytkem (celočíselné dělení); zbytek po dělení | 
** | 
        3 ** 2 | 
        Umocnění (3 na druhou) | 
Python ale zná i další druhy operátorů.
Důležité jsou operátory porovnávací.
Zkus si co dělají!
(Buď z programu pomocí print,
nebo pusť python z příkazové řádky.)
| Symbol | Příklad | Popis | 
|---|---|---|
==, != | 
        1 == 1, 1 != 1 | 
        Je rovno, není rovno | 
<, > | 
        3 < 5, 3 > 5 | 
        Menší než, větší než | 
<=, >= | 
        3 <= 5, 3 >= 5 | 
        Menší nebo rovno, větší nebo rovno | 
Podobně jako u jiných operátorů se pomocí ==, != atd. tvoří výrazy,
které Python umí vyhodnotit.
vysledek = 3 > 0
#          ╰─┬─╯
#           ano (pravda, True)
print(vysledek)
vysledek = 3 == 0
#          ╰─┬──╯
#            ne (nepravda, False)
print(vysledek)
Výsledky provnání jsou takzvané booleovské hodnoty
(angl. boolean, podle G. Boolea).
Jmenují se True (pravda), nebo False (nepravda).
V Pythonu je můžeš použít vždycky, když potřebuješ vědět, jestli něco platí
nebo neplatí.
Všimni si, že rovnost zjistíš pomocí dvou rovnítek: 3 == 3.
Jedno rovnítko přiřazuje do proměnné; dvě rovnítka porovnávají.
Slova True a False můžeš v programu použít i přímo,
jen si dej pozor na velikost písmen:
print(True)
uzivatel_je_administrator = False
Teď oprášíme program na výpočet obvodu a obsahu.
Otevři si v editoru nový soubor a ulož ho pod jménem if.py.
Zkontroluj, že je v adresáři pro tuto lekci.
Do souboru pak napiš následující program:
# Tento program počítá obvod a obsah čtverce.
strana = float(input('Zadej stranu čtverce v centimetrech: '))
print('Obvod čtverce se stranou', strana, 'je', 4 * strana, 'cm')
print('Obsah čtverce se stranou', strana, 'je', strana * strana, 'cm2')
Program spusť. Funguje?
Co se stane, když jako stranu zadáš záporné číslo? Dává výstup smysl?
Tady je vidět, jak počítač dělá přesně, co se mu řekne. Nepřemýšlí o významu. Bylo by dobré uživateli, který zadá záporné číslo, přímo říct, že zadal blbost. Jak na to?
Nejdřív zkus nastavit proměnnou která bude True,
když uživatel zadal kladné číslo.
A nyní řekni počítači, aby se na základě hodnoty této proměnné rozhodl, co má udělat.
K tomu můžeš použít dvojici příkazů if (pokud)
a else (jinak):
strana = float(input('Zadej stranu čtverce v centimetrech: '))
cislo_je_spravne = strana > 0
if cislo_je_spravne:
    print('Obvod čtverce se stranou', strana, 'je', 4 * strana, 'cm')
    print('Obsah čtverce se stranou', strana, 'je', strana * strana, 'cm2')
else:
    print('Strana musí být kladná, jinak z toho nebude čtverec!')
print('Děkujeme za použití geometrické kalkulačky.')
Neboli: po if následuje podmínka (angl. condition),
což je výraz, podle kterého se budeme rozhodovat.
Za podmínkou je dvojtečka.
Potom následují příkazy, které se provedou, pokud je podmínka pravdivá.
Všechny jsou odsazeny o čtyři mezery.
Čtyři mezery neznamenají, že musíš čtyřikrát zmáčknout mezerník! K odsazení použij klávesu Tab, která vloží správný počet mezer. (Pokud ne, nemáš správně nastavený editor – podívej se do lekce o instalaci.) Pomocí Shift+Tab můžeš odsazení zase zmenšit.
A ani Tab není vždycky potřeba.
Pokud napíšeš řádek s if bez chyby, některé editory za tebe další řádek odsadí automaticky.
Po téhle části stačí napsat neodsazené else:, zase s dvojtečkou na konci,
a odsazené příkazy, které se provedou v opačném případě.
Potom můžeš psát příkazy, které se provedou vždycky – ty odsazené nebudou,
podmíněná část programu už skončila.
Vzato čistě technicky, odsazení nemusí být o čtyři mezery. Může být třeba o dvě nebo o jedenáct, nebo se dokonce dá místo mezer použít tabulátor. V rámci jednoho bloku musí být ale odsazení vždycky stejné, takže když pak na jednom programu spolupracuje více lidí, musí se shodnout. No a na čtyřech mezerách se shodla většina Pythonního světa.
Někdy není else vůbec potřeba.
V následujícím programu se nedělá nic navíc, pokud je číslo nenulové:
cislo = int(input('Zadej číslo, přičtu k němu 3: '))
if cislo == 0:
    print('Jé, to je jednoduché!')
print(cislo, '+ 3 =', cislo + 3)
Někdy je naopak potřeba podmínek několik,
k čemuž slouží příkaz elif – kombinace else a if.
Dává se „mezi“ bloky if a else.
Příkazů elif může být za jedním if-em několik,
ale vždy se provede jen jedna „větev“:
ta první, jejíž podmínka je splněna.
vek = int(input('Kolik ti je let? '))
if vek >= 150:
    print('A ze kterépak jsi planety?')
elif vek >= 18:
    # Tahle větev se např. pro "200" už neprovede.
    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:
    # Nenastala ani nedna ze situací výše – muselo to být záporné
    print('Pro návštěvy z budoucnosti bohužel nemáme nic v nabídce.')
Příkazy if se dají zanořovat (angl. nest).
V odsazeném (podmíněném) bloku kódu může být další if s dalším odsazeným
kódem.
Třeba u tohoto programu, který rozdává nejapné rady do života:
stastna = input('Jsi šťastná?')
bohata = input('Jsi bohatá?')
if stastna == 'ano':
    # Tenhle kus kódu se provede, když je "šťastná"
    if bohata == 'ano':
        print('Gratuluji!')
    else:
        print('Zkus míň utrácet.')
else:
    # Tenhle kus kódu se provede, když není "šťastná"
    if bohata == 'ano':
        print('Zkus se víc usmívat!')
    else:
        print('To je mi líto.')