Počítač za mě počítá
- Použít interaktivní konzoli Pythonu k základním výpočtům.
Počítač je prostě taková (mnohem) chytřejší kalkulačka. Pomocí Pythonu (stejně jako všech ostatních plnohodnotných programovacích jazyků) můžeme tuhle kalkulačku ovládat. Pojďme to vyzkoušet.
Zadej do interaktivní konzole číselný výraz (třeba 7*6) a potvrď klávesou Enter. Co vidíš?
Aha! Python umí počítat.
Složitější výpočet
Zkusme něco složitějšího. Index tělesné hmotnosti (body mass index, BMI) má pomáhat při určování váhové kategorie. Počítá se jako podíl tělesné hmotnosti (v kilogramech) a druhé mocniny tělesné výšky (v metrech), vychází tedy v jednotkách [kg/m2].
Vypočti v interaktivní konzoli svůj BMI. Pokud neznáš svou váhu nebo výšku, hodnotu odhadni.
- Desetinnou čárku v Pythonu zapisujeme tečkou, stejně jako většině dalších programovacích jazyků.
- Máš potíž s výpočtem druhé mocniny? Uvědom si, co to je (a jak se počítá „ručně“).
- Dej pozor na správné použití závorek (v programování se určení pořadí používají jen kulaté závorky, podle potřeby i několikanásobně vnořené).
- Výsledek srovnej s vlastním hrubým odhademPříklad: když měřím skoro dva metry, bude BMI o něco vyšší, než čtvrtina hmotnosti..
Řešení
Zadej do konzole vzorec pro výpočet BMI s dosazenými hodnotami, např. 73/(1.82*1.82) a potvrď klávesou Enter.
V tabulce se můžeš podívat, do jaké kategorie tě BMI řadí. Zatím nejásej ani nepanikař, podrobněji se na výsledky podíváme později.
Kategorie | Rozsah BMI (v kg/m2) |
---|---|
těžká podvýživa | ≤ 16,5 |
podváha | 16,5 – 18,5 |
ideální váha | 18,5 – 25 |
nadváha | 25 – 30 |
mírná obezita | 30 – 35 |
střední obezita | 35 – 40 |
morbidní obezita | > 40 |
Historie příkazů
Jak by se hodnota BMI změnila, kdyby tvoje hmotnost o 5 kg klesla? Nebo vzrostla? Mohli bychom vzorec zadat znova. Lepší bude stisknout šipku nahoru ↑. To do konzole vloží naposledy zadaný příkaz, podobně jako na mnoha kalkulačkách. Příkaz můžeš následně upravit a nechat znovu provést — zkus to! Opakovaným stiskem šipky nahoru či dolů se můžeš v historii příkazů volně pohybovat.
Chyba!
Počítač není ani vševědoucí, ani všemocný. Občas asi zadáš příkaz, který nedává smysl. V takovém případě se Python bude bránit. Zkus to! Zadej třeba výpočet 5/0. Co se stalo? Všimni si posledního řádku chybové hlášky. Napoví ti, co se Pythonu nelíbí, a v čem je tedy asi chyba. Napadnou tě další zápisy, které vyvolají chybu?
Z chybových hlášek není třeba propadat trudomyslnosti, a už vůbec není třeba si je brát osobně. Jsou prostě způsobem komunikace programátora s počítačem a často obsahují užitečné informace.
Další operace
Viděli jsme, že Python umí počítat. Můžeš si vyzkoušet i další příklady.
- Jak dlouhé výrazy lze Pythonu zadat?
- S jak vysokými čísly zvládne Python počítat?
- S jakou přesností zvládne Python počítat?
- Umí Python pracovat s reálnými čísly? Umí to aspoň s některými? To jistě ano, třeba s přirozenými. Umí to ale se všemi, aspoň v nějakém rozsahu?
Jak by to šlo zjistit?
Smyslem následujících aktivit není „naučit se operátory“. Studenti je pravděpodobně ještě využijí, takže se hodí, aby o nich věděli. Zkoumáním operátorů v interaktivní konzoli si studenti mají navyknout na práci s tím prostředím a na použití systematického analytického postupu v situaci, s jakou se běžně ve škole nesetkávají.
Prozradíme, že jde o číselný operátor. Zkoumáš tedy zápisy typu 568**812.
Promysli si systematický postup. Postupně odhaluj vlastnosti operátoru:
- Je komutativní? Tedy, je např. 5**6 totéž co 6**5?
- Jak se snáší s nulou, jedničkou, minus jedničkou, dalšími zápornými čísly, desetinnými čísly?
- Když se zvětšuje první operand(číslo vlevo od operátoru), co se děje s výsledkem? Jak je to s druhým operandem(číslo vpravo od operátoru; operand je to, s čím pracuje operátor)?
- Když tě napadne, co je operátor zač, svou myšlenku ověř.
- Výsledky pokusů shromažďuj do přehledné tabulky, ať si děláš celkový přehled.
Řešení
Dvojitá hvězdička (**) je operátorem mocnění. Např. 34 se zapíše jako 3**4 a dá výsledek 81.
S pomocí dvojité hvězdičky můžeš upravit zadání výpočtu BMI (např. na 73/(1.82**2)). Výhoda je, že při změně výšky stačí upravit jedno místo ve zdrojovém kódu, čímž se snižuje pravděpodobnost chyby.
Opět se jedná o číselný operátor. Zkoumáš tedy zápisy typu 812%568.
Postupuj obdobně jako v předchozím případě.
Řešení
Procento (%) je operátor zbytku po celočíselném dělení, tzv. modulo. Dělení je totiž operace, která dává dvě výsledné hodnoty: podíl a zbytek.
Baví tě zkoumání neznámých operátorů? Podívej se také na operátory <<, >>, |, & a ^. Je to o něco lehčí, když se zaměříš na nezáporná celá čísla. Pak se můžeš podívat i na operátor ~, který pracuje s jediným číslem, zadej tedy třeba ~12. Co vlnka dělá zjistíš snadno — ale dokážeš vysvětlit, k čemu je takový operátor dobrý? Nápověda je, že vlnka patří do stejné skupiny jako předchozí operátory, a že souvisí s reprezentací záporných celých čísel v počítači.
Jestli myslíš, že se ti tyto operátory budou ještě hodit, někam si to poznamenej, ať si je nemusíš pamatovat.
Další funkce
Zatím jsme si ukázali jen základní operátory. Počítat už se ale učíš aspoň desátým rokem, takže se může stát, že se základem nevystačíš. Můžeš potřebovat například goniometrické funkce. Pokročilejší matematické výpočty umožňuje modul math. Modul si představ jako hotovou sadu nástrojů připravenou k použití. Stačí si o ně říct.
Postupně do konzole zadej tyto řádky:
import math
math.cos(0)
math.sqrt(1024)
math.sqrt(3**2 + 4**2)
První řádek Pythonu říká, že budeme chtít používat složitější matematiku. Pak už můžeme používat konkrétní funkce. Před jejich názvem je vždy math., aby Python věděl, že je má hledat právě v modulu math. Můžeme tedy ověřit, že i v Pythonu platí cos(0) = 1. Zjistíš, co počítá funkce math.sqrt? Poradíme, že její zkratka pochází z anglického square root.
Moduly(nazývané někdy také balíčky nebo knihovny atp.) jsou velmi praktické. Umožňují opakovaně využít výsledky už jednou vynaložené práce. Díky nim není třeba psát programy pokaždé znovu „od nuly“. S některými dalšími zajímavými moduly se ještě seznámíme.
Proč je to tolik matematiky?
Připomeňme, že ten přístroj se jmenuje počítač. Kromě toho je počítání v konzoli někdy praktické - můžeš to v životě uplatnit, i když jsi v programování teprve na začátku. Někdy je sice praktičtější třeba tabulkový procesor, ale čím je výpočet složitější, tím víc potřebujeme možnost jeho automatizace, a tím větší je také pravděpodobnost, že tabulkovému procesoru dojde dech.
Shrnutí
![ikona boxu](/~lessner/mw/images/b/b5/Icon_Excavator.png)
- Konzoli Pythonu lze využít k pohodlnému počítání.
- Python umí základní čtyři operace (+,-, *, /).
- Priority operací lze určit kulatými závorkami.
- Desetinná místa oddělujeme tečkou.
- Operátor % počítá zbytek po dělení, výsledkem 32%15 je 2.
- K pokročilejším výpočtům využijeme modul math. Načteme jej příkazem import math. Poté můžeme používat konkrétní funkce, např. math.sqrt().
- V historii příkazů se pohybujeme šipkami.