10. díl - Knihovny math a random

Python Základní konstrukce Knihovny math a random

Unicorn College ONEbit hosting Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Vícerozměrná pole v Pythonu, jsme si ukázali, jak na funkce a základy ošetřování chyb. Dnes se v Python tutoriálu naučíme používat některé z knihoven, hlavně tu základní matematickou.

Knihovny

Knihovny (neboli moduly) nám poskytují užitečný zdroj datových typů, funkcí a různých nástrojů, pro ještě lepší programy. Jednoduše nemusíme psát něco, co už někdo napsal před námi. Své programy složíme z existujících modulů a jejich vývoj bude pohodlnější a rychlejší.

Import

Import knihoven (zpřístupnění knihovny) se provádí pomocí následující syntaxe:

Nejlepší způsob:

import nazev_modulu

Poté funkci z modulu voláme voláme stejně, jako by to byla metoda modulu:

nazev_modulu.nazev_funkce()

Pokud chceme jen určitou funkci, můžeme ji importovat takto:

from nazev_modulu import nazev_funkce

Poté stačí napsat jen:

nazev_funkce()

Pro zpřístupnění všeho z modulu:

from nazev_modulu import *

Tohle používejte jen pokud víte, co děláte...

Lze použít i aliasy s následující syntaxí:

import nazev_modulu as vlastni_nazev

Aliasy se požívají pro import modulů z balíčků. Balíčky jsou seskupení více modulů.

Moduly se importují na začátku programu!

math

Jako první si představíme matematickou knihovny Pythonu - math. Pojďme ji naimportovat:

import math

Modul math obsahuje dvě konstanty - pí a Eulerovo číslo:

>>> print(math.pi)
3.1415926353589793
>>> print(math.e)
2.718281828459045

Modul nám také poskytuje velmi užitečné funkce (metody) pro počítání. Nejzákladnější funkce jsou:

sin(úhel)
>>> print(math.sin(math.pi/2))
1.0

Vrátí hodnotu funkce sinus pro úhel v radiánech.

cos(úhel)
>>> print(math.cos(math.pi))
1.0

Vrátí hodnotu funkce cosinus pro úhel v radiánech.

tan(úhel)

Vrátí hodnotu funkce cosinus pro úhel v radiánech.

asin(hodnota)

Vrátí úhel v radiánech pro danou hodnotu, jenž vznikla z funkce sinus. Opačná funkce k sinus.

acos(hodnota)

Vrátí úhel v radiánech pro danou hodnotu, jenž vznikla z funkce cosinus. Opačná funkce k cosinus.

atan(hodnota)

Vrátí úhel v radiánech pro danou hodnotu, jenž vznikla z funkce tangens. Opačná funkce k tangens.

degrees(úhel)
>>> print(math.degrees(math.pi))
180.0

Vrátí hodnotu úhlu převedenou z radiánů na stupně.

ceil(číslo)
>>> print(math.ceil(3.1))
4

Zaokrouhlí číslo na nejbližší celé číslo směrem nahoru.

floor(číslo)
>>> print(math.floor(3.1))
3

Zaokrouhlí číslo na nejbližší celé číslo směrem dolu.

fabs(číslo)
>>> print(math.fabs(-3.1))
3.1

Vrátí absolutní hodnotu desetinného čísla. Vestavěná funkce abs() vrací absolutní hodnotu celého čísla.

factorial(číslo)
>>> print(math.factorial(4))
24

Vrátí faktoriál daného čísla. Pokud je hodnota nečíselná nebo záporná, vyvolá výjimku ValueError.

pow(číslo1, číslo2)
>>> print(math.power(2, 3))
8.0

Umocní první číslo na druhé číslo.

sqrt(číslo)
>>> print(math.sqrt(16))
4.0

Vrátí druhou odmocninu z čísla.

hypot(číslo)
>>> print(math.hypot(3, 4))
5.0

Vrátí eukleidovskou vzdálenost, tj. math.sqrt(x*x + y*y).

log(číslo, základ)
>>> print(math.log(16, 4))
2.0

Vrátí logaritmus čísla o základu, je-li zadán. Pokud ne, vrátí hodnotu přirozeného logaritmu (se základem Eulerova čísla).

log10(číslo)
>>> print(math.log10(1000))
3.0

Vrátí logaritmus čísla o základu 10.

log2(číslo)
>>> print(math.log2(32))
5.0

Vrátí logaritmus čísla o základu 2.

A to byl výčet základních funkcí modulu math. Chcete-li další, stačí napsat help(math) - pozor - modul math musí být naimportován!

random

Jaku druhý modul si představíme Random, pojďme ho naimportovat:

import random

Modul random nám poskytuje mnoho užitečných funkcí. Tyto funkce nám umožňují generovat pseudo-náhodná čísla, míchat seznamy, vybírat z nich náhodně prvky a mnoho dalších. My si představíme základní z nich.

randint(číslo1, číslo2)
>>> print(random.randint(1, 4))
2
>>> print(random.randint(1, 4))
4
>>> print(random.randint(1, 4))
1
>>> print(random.randint(1, 4))
2
>>> print(random.randint(1, 4))
3

Vybere náhodné číslo v rozsahu od prvního do druhého čísla.

choice(seznam)
>>> seznam = [1, 2, 3, 4, 5]
>>> print(random.choice(seznam))
2

Vybere náhodný prvek se seznamu (nebo jiné kolekce).

shuffle(seznam)
>>> seznam = [1, 2, 3, 4, 5]
>>> random.shuffle(seznam)
>>> print(seznam)
[3, 1, 2, 5, 4]

Zamíchá pořadí prvků v seznamu. Lze použít i jiný datový typ, který podporuje přiřazování.(Zatím jiné kromě seznamu neznáme :) )

sample(seznam, množství)
>>> seznam = [1, 2, 3, 4, 5]
>>> print(random.sample(seznam, 3))
[4, 1, 2]

Náhodně vybere množství prvků ze seznamu. Lze použít i jinou kolekci. (Zatím jinou kromě seznamu neznáme :) )

Easter eggs

Na závěr sekce se základy Pythonu se podíváme na easter eggs. To jsou skryté a zábavné funkčnosti, které do jazyka schovali jeho tvůrci. Python jich pár obsahuje :) Zkuste si napsat:

1:

import this

2:

import antigravity

3:

import __hello__

4:

from __future__ import braces

5:

Dále si můžete v interaktivní konzoli upravit:

'>>> '

a

'... '

Pomocí:

>>> import sys
>>> sys.ps1 = "--> "
--> sys.ps2 = "--- " #následuje příklad
--> if True:
---     print("Hello World!")
---
--> Hello World!

Tak a to je pro dnešní lekci vše a tuto sekci vše. Kurz nyní pokračuje v sekci Základy objektově orientovaného programování v Pythonu. Příště si tedy představíme objektový svět a pochopíme mnoho věcí, které nám byly až doteď utajovány.


 

 

Článek pro vás napsal gcx11
Avatar
Jak se ti líbí článek?
6 hlasů
(^_^)
Miniatura
Předchozí článek
Vícerozměrná pole v Pythonu
Miniatura
Všechny články v sekci
Základní konstrukce jazyka Python
Miniatura
Následující článek
Cvičení k 8.-10. lekci Pythonu
Aktivity (2)

 

 

Komentáře

Avatar

Člen
Avatar
:16.11.2014 18:20

Sekce dobře napsaná a Python mne v mnohém pozitivně zaujal.

 
Odpovědět 16.11.2014 18:20
Avatar
davidhumpolik.linux:29.6.2015 22:37

No celá série je dost přínosná dokonce líp než barsjaká kniha.

Odpovědět 29.6.2015 22:37
Neni problém začít, ale vydržet...
Avatar
Jaroslav Trojan:1. května 18:19

Zdravím,
mám program s funkcemi, ale funkce soucin(*cisla) mi u proměnných n1,m1,o1,p1 vyhodí jako výsledek nulu.
Přitom se ve funkci vstup() do proměnných přiřadí konkretní int.čísla.

 
Odpovědět 1. května 18:19
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Jaroslav Trojan
gcx11:1. května 18:27

Protože se ty proměnné ve funkci se berou jako lokální. Každá proměnná je viditelná pouze ve svém bloku. A ty když přijdeš do té funkce, tak se vyrobí nové proměnné se stejným názvem, které zakryjí ty proměnné, co jsi vyrobil předtím. Řešením je ty hodnoty vrátit jako výstup funkce.

 
Odpovědět 1. května 18:27
Avatar
Odpovídá na gcx11
Jaroslav Trojan:2. května 8:03

Ahoj, provedl jsem návrat hodnot ve funkci, výsledek zase není správný.

 
Odpovědět 2. května 8:03
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Jaroslav Trojan
pocitac770:2. května 12:31

Návratové hodnoty musíš někde uložit/použít, jak bylo řečeno, nemají vůbec nic společného s těmi proměnnými mimo blok funkce, proto bys musel napsat např

prikl = soucin(vstup())
Editováno 2. května 12:32
 
Odpovědět 2. května 12:31
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.