19. diel - Matematické funkcie v Pythone a knižnica math
V predchádzajúcej lekcii, Funkcie a výnimky v Pythone, sme si ukázali, ako na funkcie a základy ošetrovania chýb.
V dnešnej lekcii sa budeme venovať knižnici math, ktorá
poskytuje Pythonu matematické funkcie ako zaokrúhlenie, goniometrické
funkcie, mocniny, odmocniny a podobne.
Knižnice
Knižnice (čiže moduly) nám poskytujú užitočný zdroj dátových typov, funkcií a rôznych nástrojov pre ešte lepšie programy. Jednoducho nemusíme písať niečo, čo už niekto napísal pred nami. Svoje programy zložíme z existujúcich modulov a vďaka tomu bude ich vývoj pohodlnejší a rýchlejší.
Import knižníc
Aby sme mohli funkcie z knižníc používať, musíme najprv knižnicu importovať (sprístupniť). Import sa vykonáva pomocou nasledujúcej syntaxe:
import module_name
Potom funkciu z modulu zavoláme:
module_name.function_name()
Ak chceme len určitú funkciu, môžeme ju importovať takto:
from module_name import function_name
Následne napíšeme:
function_name()
Na sprístupnenie všetkého z modulu použijeme hviezdičku
*:
from module_name import *
Tento spôsob je na prvý pohľad jasným kandidátom na uľahčenie práce.
Opak je však pravdou
Ak si
sprístupníme všetko, veľmi nám napučí menný systém. Tiež môže
dôjsť ku kolízii názvov z iných modulov. Takiež sa zneprehľadní kód.
Tento nástroj je teda potrebné používať s dôkladnou rozvahou.
Pri importe môžeme s nasledujúcou syntaxou použiť aj aliasy:
import module_name as custom_name
Aliasy sa používajú na import modulov z balíčkov. Balíčky sú zoskupenia viacerých modulov.
Moduly sa importujú na začiatku programu.
Knižnica math
Základné matematické funkcie sú v Pythone obsiahnuté v knižnici
math. Knižnica nám poskytuje dve základné konštanty:
pi a e. Konštanta pi je pochopiteľne
číslo pí (3.1415…) a e je Eulerovo číslo, teda
základ prirodzeného logaritmu (2.7182…). Asi je zrejmé, ako sa
s knižnicou pracuje, ale pre istotu si na ukážku konštanty vypíšme do
konzoly:
import math
print("pi:", math.pi)
print("e:", math.e)
Výstup programu:
Konzolová aplikácia
pi: 3.141592653589793
e: 2.718281828459045
Funkcie knižnice math
Modul nám taktiež poskytuje veľmi užitočné funkcie na výpočty. Pozrime sa na tie najzákladnejšie.
Goniometrické
funkcie sin(), cos(), tan(),
asin(), acos() a atan()
Goniometrické funkcie vracajú hodnotu pre uhol v radiánoch, ktorý odovzdáme ako parameter. Syntax je pri všetkých funkciách rovnaká:
import math
print(math.sin(math.pi/2)) # Returns the sine of 90°
Radián je bezrozmerná jednotka používaná na veľkosť uhla.
Plný kruh zodpovedá uhlu 2π radiánov.
Konverzné funkcie
degrees() a radians()
Funkcia degrees() prevádza hodnotu uhla z radiánov na stupne,
zatiaľ čo radians() prevádza stupne na radiány:
import math
print(math.degrees(math.pi)) # Returns 180.0
print(math.radians(180)) # Returns the value of π
Funkcia na zaokrúhľovanie
ceil() a floor()
Funkcia ceil() vykoná zaokrúhlenie na najbližšie celé
číslo smerom hore, funkcia floor() potom dole :
import math
print(math.ceil(3.1))
print(math.floor(3.9))
Funkcia round(), ktorú už dobre poznáme,
zaokrúhľuje podľa pravidiel matematiky. Nie je súčasťou knižnice
math, ide o vstavanú (built-in) funkciu Pythonu.
Funkcia na prácu
s číslami fabs(), factorial(), pow() a
sqrt()
Funkcia fabs() nám vráti absolútnu hodnotu desatinného
čísla. Funkcia factorial() vráti faktoriál daného čísla. Ak
je hodnota nečíselná alebo záporná, vyvolá funkcia
factorial() výnimku ValueError. Funkcia
pow() umocní prvé odovzdané číslo na druhé číslo a
sqrt() vráti druhú odmocninu z daného čísla:
import math
print(math.fabs(-3.1))
print(math.factorial(4))
print(math.pow(2, 3))
print(math.sqrt(16))
Funkcia hypot()
Funkcia vráti euklidovskú vzdialenosť, t. j.
math.sqrt(x*x + y*y). Alebo inými slovami na základe Pytagorovej
vety vypočíta preponu pravouhlého trojuholníka:
import math
print(math.hypot(3, 4))
Funkcia pre logaritmy
log(), log10() a log2()
Funkcia log() vráti logaritmus čísla o základe, ak je
zadaný. Ak nie, funkcia vráti hodnotu prirodzeného logaritmu (so základom
Eulerovho čísla). Funkcia log10() vráti z daného čísla
logaritmus o základe 10 a log2() vráti z daného
čísla logaritmus o základe 2:
import math
print(math.log(16, 4))
print(math.log10(1000))
print(math.log2(32))
V nasledujúcej lekcii, Najčastejšie chyby Python začiatočníkov, robíš ich tiež?, si ukážeme najčastejšie chyby
začiatočníkov v Pythone, napr. ohľadom pomenovania kolekcií,
bool výrazov a DRY.
