Pamatuješ si ještě, co je to operátor?
V domácím projektu jsme si ukázaly 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 |
** |
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 |
Větší než, menší než |
<=, >= |
3 <= 5, 3 >= 5 |
Větší nebo rovno, menší nebo rovno |
Hodnoty provnání jsou takzvané booleovské hodnoty
(angl. boolean, podle G. Boolea).
V Pythonu se používají vždycky, když potřebujeme vědět, jestli něco platí
nebo neplatí.
Jsou jenom dvě – buď True (pravda), nebo False (nepravda).
Jako všechny hodnoty, True a False se dají přiřazovat do proměnných:
pravda = 1 < 3
print(pravda)
nepravda = 1 == 3
print(nepravda)
Všimni si, že rovnost se zjišťuje pomocí dvou rovnítek: 3 == 3.
Jedno rovnítko přiřazuje do proměnné; dvě rovnítka porovnávají.
Slova True a False jdou
v programu použít i přímo,
jen je potřeba dávat pozor na velikost písmen:
print(True)
print(False)
Teď oprášíme program na výpočet obvodu a obsahu.
Do nového souboru, třeba ~/pyladies/02/if.py,
napiš následující program.
Co se stane, když jako stranu zadáš záporné číslo?
Dává výstup smysl?
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')
Tady je vidět, jak počítač dělá přesně, co se mu řekne, a 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í řekneme počítači, aby tuhle proměnnou použil.
K tomu se používá dvojice příkazů if (pokud)
a else (jinak).
Nejlepší bude je ukázat na příkladu:
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.
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.
Čistě technicky, odsazení nemusí být o čtyři mezery. Může být třeba o dvě nebo o jedenáct, nebo dokonce o 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('Návštěvníky z budoucnosti tady nevidíme rádi.')
Příkazy if se dají zanořovat (angl. nest):
jeden může být vevniř ve druhém.
Třeba takhle:
tah_pocitace = 'kámen'
tah_cloveka = input('kámen, nůžky, nebo papír? ')
if tah_cloveka == 'kámen':
if tah_pocitace == 'kámen':
print('Plichta.')
elif tah_pocitace == 'nůžky':
print('Vyhrála jsi!')
elif tah_pocitace == 'papír':
print('Počítač vyhrál.')
elif tah_cloveka == 'nůžky':
if tah_pocitace == 'kámen':
print('Počítač vyhrál.')
elif tah_pocitace == 'nůžky':
print('Plichta.')
elif tah_pocitace == 'papír':
print('Vyhrála jsi!')
elif tah_cloveka == 'papír':
if tah_pocitace == 'kámen':
print('Vyhrála jsi!')
elif tah_pocitace == 'nůžky':
print('Počítač vyhrál.')
elif tah_pocitace == 'papír':
print('Plichta.')
else:
print('Nerozumím.')
Vida, tvoje první hra! Jen je ještě potřeba před každým spuštěním přepsat řetězec na prvním řádku. Jak zařídit, aby počítač vybíral náhodně, to si povíme později.