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é
1 result = 3 * (5 + 2) 2 # ╰──┬──╯ 3 result = 3 * 7 4 # ╰─┬────╯ 5 result = 21 - Vyhodnocení proměnné
1 a = 4 2 b = 5 3 4 result = (a + b) / a 5 # | | | 6 result = (4 + 5) / 4 7 # ╰──┬──╯ 8 result = 9 / 4 9 # 10 result = 2.25 - Podmínky
1 strana = -5 2 3 if strana <= 0: 4 # ╰────┬─────╯ 5 # True 6 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:
1 if volba == 1: 2 # proved operaci sinus 3 elif volba == 2: 4 # proved operaci cosinus 5 ... 6 else: 7 # neznámá operace - Napíšeme toto:
1 match volba: 2 case 1: 3 # sinus 4 case 2: 5 # cosinus 6 ... 7 case _: 8 # neznámá operace
- V jiných jazycích se tento konstrukt nazývá