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 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 |
Hodnoty porovnání jsou takzvané booleovské hodnoty
(angl. boolean, podle G. Boolea).
V Pythonu je můžeš použít vždycky, když potřebuješ 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 můžeš přiřadit do proměnných:
pravda = 1 < 3
print(pravda)
nepravda = 1 == 3
print(nepravda)
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)
print(False)
Teď oprášíme program na výpočet obvodu a obsahu.
Otevři si v editoru nový soubor.
Jestli ještě v adresáři, kde máš soubory ke kurzům Pythonu,
nemáš adresář pro tuto lekci (třeba 02), vytvoř si ho.
Nový soubor ulož do něj pod jménem if.py.
Do souboru pak napiš následující program:
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.')