Výraz, import a match
Lekce 4
Úlohy
Kalkulačka
Na hodině jsme si ukazovali program, který funguje jako kalkulačka.
Nejdříve se vás zeptá na výběr režimu. Režim odpovídá nějakému číslu.
Režim 1 vypočte sinus úhlu (nezapomeňte, že funkce sin
z modulu math
bere jako argument úhel v radiánech, takže ho budete muset převést).
Režim 2 vypočte cosinus, režim 3 tangens.
Režimy 4 a 5 budou počítat n-tou mocninu a odmocninu.
Po výběru režimu se vás kalkulačka zeptá na potřebné údaje k výpočtu.
Při práci využijte konstrukci match
.
Co jsme probrali
- Výraz
- Zjednodušeně řečeno je to to stejné, jako výraz v matematice
- Stejně jako v matematice výraz vyhodnocujete (vyčíslujete), dělá to stejné i Python
- Kde všude Python vyhodnucuje výraz?
- Přiřazení do proměnné
result = 3 * (5 + 2) # ╰──┬──╯ result = 3 * 7 # ╰─┬────╯ result = 21
- Vyhodnocení proměnné
a = 4 b = 5 result = (a + b) / a # | | | result = (4 + 5) / 4 # ╰──┬──╯ result = 9 / 4 # result = 2.25
- Podmínky
strana = -5 if strana <= 0: # ╰────┬─────╯ # True print("Strana musí být kladná!")
- V jakém pořadí se výraz vyhodnotí? Dokážete to přesně zadefinovat?
- Funkce
- K čemu nám jsou?
- Abychom se nemuseli v kódu opakovat
- Organizace našeho kódu
- Příklad volání funkce
delka = len("Ahoj")
len
je jméno funkce (v tomto případě tato funkce vrací délku řetězce)"Ahoj"
je argument pro funkcidelka
je tzv. návratová hodnota, tedy funkcelen
udělá něco se svými argumenty a vrátí nějakou hodnotu- V tomto případě je volání funkce také výraz
- Funkce ale nemusí vracet nic, třeba funkce
print
jen něco provede (vytiskne do konzole text) a nic nevrátí- Funkcím, co nic nevrací, se říká procedury, název je ale spíše historický
- Užitečné funkce
input()
aprint()
- Ty už známe
int()
,float()
,str()
- Tyto funkce se pokusí argument převést na typ, podle kterého se tato funkce jmenuje
round()
- Zaokrouhluje desetinné číslo
- K čemu nám jsou?
- Slovíčko
import
nám umí zpřístupnit různé užitečné funkce (a další věci).- Každá funkce má své jméno a jmen není nekonečno, mohou se opakovat.
- Proto se k funkci přistupuje skrz jméno modulu.
- Ve dvou různých modulech můžeme mít dvě funkce se stejným jménem, které ale dělají něco úplně jiného
- Pokud si jsme jistí, že nedojde ke kolizi jmen funkcí, lze použít
from math import sqrt, sin
.- Můj vlastní názor je, že toto se hodí spíše pro import z jiných souborů.
- Jméno modulu jde zkrátit:
import numpy as np
, používá se typicky jen u některých modulů, kde jsou zkratky zažité (jako třeba knihovna numpy) - Naše vlastní soubory se také chovají jako moduly, kdyby se jmenovaly stejně jako modul z knihovny, ten knihovní by nešlo importovat
- Moduly, co se mohou hodit
math
random
- Každá funkce má své jméno a jmen není nekonečno, mohou se opakovat.
match
- V jiných jazycích se tento konstrukt nazývá
switch
- Umožňuje nám jednodušeji porovnávat, pokud porovnáváme jednu proměnnou
- Dělá náš kód čitelnějším a přehlednějším
- Využijete v úloze "Kalkulačka"
- Místo tohoto:
if volba == 1: # proved operaci sinus elif volba == 2: # proved operaci cosinus ... else: # neznámá operace
- Napíšeme toto:
match volba: case 1: # sinus case 2: # cosinus ... case _: # neznámá operace
- V jiných jazycích se tento konstrukt nazývá