Ve druhém dílu seriálu Python se naučíme pracovat s knihovnou math, která nám umožňuje používat množství konstant a funkcí pro matematické výpočty.
Studijní materiály
Odkaz pro zobrazení Google Slides.
Kontrolní otázky
Jaké matematické operátory jsou v Pythonu povoleny pro celá čísla (datový typ integer)?
Kde nalezneme podrobnosti k příkazům Python, názvy funkcí a konstant, jejich syntaxi a sémantiku?
Programy
"""
jablka.py
Vytvoř program, který rozdělí daný počet jablek mezi daný počet dětí. Jablka lze dávat pouze celá, nikoliv jejich části (poloviny, čtvrtiny…).
vstup = počet jablek, počet dětí (celá čísla)
výstup = počet jablek / 1 dítě, zbytek
1.) načtení vstupů
2.) výpočet
3.) výstup výsledků
"""
jablka = int(input("Zadej počet jablek: "))
deti = int(input("Zadej pocet dětí: "))
# podil = jablka // deti
# zbytek = jablka % deti
podil, zbytek = jablka // deti, jablka % deti
# Python dokáže ukládat více hodnot do více proměnných
# vznikají tím tzv. n-tice (datový typ tuple)
print()
print("Na 1 dítě vychází", podil, "jablek.")
print("Zůstane mi", zbytek, "jablek.")
"""
prirozenaCisla.py
Vytvoř program, který vypíše, z kolika jednotek, desítek, stovek a tisíců se skládá číslo na vstupu.
vstup: přirozené číslo
výstupy: počet jednotek, desítek, stovek, tisíců
1.) načtení vstupní hodnoty
2.) výpočty (celočíselné dělení)
3.) průběžné výstupy
"""
vstup = int(input("Zadej přirozené číslo: "))
cislo = vstup
tisice = cislo // 1000
# print("Tisíce:", tisice)
cislo = cislo % 1000
stovky = cislo // 100
# print("Stovky:", stovky)
cislo = cislo % 100
desitky = cislo // 10
# print("Počet desítek:", desitky)
cislo = cislo % 10
jednotky = cislo // 1
# print("Počet jednotek:", jednotky)
cislo = cislo % 1
print(vstup, "=", tisice, "* 1000 +", stovky, "* 100 +", desitky, "* 10 +", jednotky, "* 1")
"""
automat.py
Vytvoř program, který rozdělí částku na vstupu na mince nominálních hodnot 50, 20, 10, 5, 2, 1. Na stejném principu fungují automaty vracející zbývající částku po nákupu s tím rozdílem, že pracují v cyklu.
vstup: částka
výstup: počty minci CZK měny
1.) načtení vstupu
2.) postupné celočíselné dělení, zmenšování čísla o podělenou část
3.) výstupy počtu mincí
"""
castka = int(input("Zadej celočíselnou částku k rozdělení: "))
padesat = castka // 50
castka = castka % 50
dvacet = castka // 20
castka = castka % 20
deset = castka // 10
castka = castka % 10
pet = castka // 5
castka = castka % 5
dva = castka // 2
castka = castka % 2
print("50 *", padesat)
print("20 *", dvacet)
print("10 *", deset)
print("5 *", pet)
print("2 *", dva)
print("1 *", castka)
"""
desetinneCislo.py
Vytvoř program, který rozdělí desetinné číslo na celou a desetinnou část.
vstup: desetinné číslo (např. 3.14)
výstup: celá a desetinná část čísla (tzn. 3 + 0.14)
1.) vstup
2.) výpočet
3.14 = 3 + 0.14
jak udělám z čísla 3.14 číslo 3?
přetypování float -> int :)
jak dostanu desetinnou část?
rozdíl 3.14 - 3 = 0.14 :)
3.) výstup
"""
cislo = float(input("Zadej desetinné číslo: "))
celaCast = int(cislo)
# desetinnaCast = cislo = celaCast
# tímto zápisem uložíš poslední hodnotu vpravo (celaCast)
# do všech proměnných vlevo (desetinnaCast, cislo)
desetinnaCast = cislo - celaCast
print(cislo, "=", celaCast, "+", desetinnaCast)
"""
sinusCosinus.py
Na samostatném algoritmu si vyzkoušej funkce sinus a cosinus pro hodnoty úhlu ve stupních, které zadá uživatel na vstupu.
vstup: úhel ve stupních
výstup: sinus a cosinus
1.) vstup
2.) výpočty
3.) výstup
"""
import math
uhel = float(input("Zadej úhel ve stupních: "))
# trigonometrické funkce pracují s úhly v radiánech!
uhelRadiany = math.radians(uhel)
# úhel v radiánech výpočtem -- trojčlenka:
# 180 stupňů ........ pi radiánů
# x stupňů .......... ? radiánů
# ? = (x * pi) / 180
uhelVypoctem = (uhel * math.pi) / 180
print(uhelVypoctem)
print("Úhel v radiánech:", uhelRadiany)
sinus = math.sin(uhelRadiany)
cosinus = math.cos(uhelRadiany)
print("Sinus:", sinus)
print("Cosinus:", round(cosinus, 2))
"""
faktorial.py
Na samostatném algoritmu si vyzkoušej funkci pro výpočet faktoriálu vloženého přirozeného čísla. Vstup přirozeného čísla ošetři podmínkou.
vstup: přírozené číslo
výstup: faktoriál
1.) načtení hodnoty, kontrola, zdali je číslo
celé a kladné
2.) výpočet
3.) výstup výsledku
"""
import math
cislo = int(input("Zadej celé kladné číslo: "))
if cislo > 0:
faktorial = math.factorial(cislo)
print(str(cislo) + "! = " + str(faktorial))
else:
print("Nebylo zadáno celé kladné číslo.")
"""
castiCisla.py
Vytvoř algoritmus, který dle zadaného desetinného čísla vypíše jeho celou a desetinnou část. Použij dvě řešení – s a bez funkce knihovny math.
vstup: desetinné číslo
výstup: celá a desetinná číst čísla
1.) vstup, př. 6.2
2.) výpočet bez funkce:
6 = int(6.2)
0.2 = 6.2 - 6
výpočet s funkcí:
math.modf()
3.) výpis výsledku, př. 6.2 = 6 + 0.2
"""
import math
cislo = float(input("Zadej desetinné číslo: "))
cele1 = int(cislo)
desetinne1 = cislo - cele1
print(cislo, "=", cele1, "+", round(desetinne1, 2))
desetinne2, cele2 = math.modf(cislo)
# uložení hodnot do více proměnných
# vznikají tím n-tice (datový typ tuple)
desetinne2 = round(desetinne2, 2)
print(cislo, "=", cele2, "+", desetinne2)