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.