Ukažme si pár základních funkcí, které Python nabízí.
Tato kapitola ukazuje výběr z nástrojů, které jsou ti v Pythonu k dispozici. Tvůj cíl není naučit se vše nazpaměť, ale mít přehled o tom, co je zhruba možné. Detaily můžeš vždycky dohledat – ať už na taháku (které jsou, na rozdíl od školy, vždycky povoleny!), v těchto materiálech, nebo v oficiální dokumentaci či jinde na Internetu.
Můžeš si stáhnout i tahák, který se rozdává na srazech. Doporučuji mít ho ze začátku při ruce. Když narazíš na úkol, se kterým si nevíš rady, projdi si tahák a zamysli se, která z funkcí by se dala použít.
Tyhle funkce už známe.
print
vypíše nepojmenované argumenty, oddělené mezerou.
Pojmenovaný argument end
určuje co se vypíše na konci (místo přechodu
na nový řádek);
sep
udává, co se vypíše mezi jednotlivými argumenty (místo mezery).
Příklad opět spusť ze souboru, ne interaktivně:
print(1, 'dvě', False)
print(1, end=' ')
print(2, 3, 4, sep=', ')
Základní funkce pro načtení vstupu, input
,
vypíše otázku, počká na text od uživatele a ten vrátí jako řetězec.
input('zadej vstup: ')
Kontrolní otázky:
input
„normální“ funkce, nebo procedura?input
jako argument?input
?Co ale když nechceme pracovat s řetězcem, ale třeba s číslem?
Tady nám pomůže skupina funkcí, které umí převádět čísla na řetězce a zpátky.
Každý ze čtyř typů (angl. types) proměnných, které zatím známe,
má funkci, která vezme nějakou hodnotu a vrátí podobnou hodnotu „svého“ typu.
Na celá čísla je funkce int
(z angl. integer), na reálná čísla je float
(z angl. floating-point), pro řetězce str
(z angl. string),
a pro pravdivostní hodnoty bool
(z angl. boolean).
int(x) # převod na celé číslo
float(x) # převod na reálné číslo
str(x) # převod na řetězec
bool(x) # převod na pravdivostní hodnotu
Příklady:
3 == int('3') == int(3.0) == int(3.141) == int(3)
8.12 == float('8.12') == float(8.12)
8.0 == float(8) == float('8') == float(8.0)
'3' == str(3) == str('3')
'3.141' == str(3.141) == str('3.141')
Ne všechny převody jsou možné:
int('blablabla') # chyba!
float('blablabla') # chyba!
int('8.9') # chyba!
…a jak si poradit s chybou, která nastane, když použiješ špatnou hodnotu, si řekneme později.
input
Převádění typů se často používá při načítání vstupu, třeba takto:
cislo = int(input('Zadej číslo: '))
Jak Python vyhodnotí tento výraz?
Zadá-li uživatel 42Enter,
funkce input
vrátí řetězec'42'
.
Ten pak funkce int
vezme jako argument, udělá podle něj číslo a to
číslo vrátí:
cislo = int(input('Zadej číslo: '))
# ╰─────────┬─────────╯
cislo = int( '42' )
# ╰────────────┬────────────╯
cislo = 42
Matematika je občas potřeba, takže se pojďme podívat, jak v Pythonu pracovat s čísly.
Jedna zajímavá matematická funkce je k dispozici vždy:
round(cislo) # zaokrouhlení
Spousta dalších není k dispozici od začátku programu.
Ne každý má rád matematiku, a ne ve všech druzích programu jsou takové operace
potřeba.
Proto musíš předem – typicky na začátku souboru – říct, že je budeš používat.
To se dělá naimportováním z modulu math
:
from math import sqrt, floor, ceil
Naimportované funkce pak můžeš použít:
sqrt(cislo) # druhá odmocnina
floor(cislo) # zaokrouhlení dolů
ceil(cislo) # zaokrouhlení nahoru
Kdybys potřeboval/a goniometrické funkce jako sinus, jsou k dispozici taky. Jen pozor na to, že počítají pro úhly v radiánech. Hodnoty ve stupních je potřeba na radiány převést.
from math import sin, cos, tan, degrees, radians
sin(uhel) # sinus
cos(uhel) # kosinus
tan(uhel) # tangens
degrees(uhel) # převod z radiánů na stupně
radians(uhel) # převod ze stupňů na radiány
Import a pojmenování souborů
Při importování je potřeba si dávat pozor na pojmenování souborů:
importuješ-li from math
, nesmí se tvůj program jmenovat math.py
.
Proč? Když Python v adresáři, ze kterého program pouštíš, najde soubor
math.py
, bude se snažit importovat sin
z něho místo
z předpřipravené sady matematických funkcí.
Nakonec si ukážeme dvě funkce, které vrací náhodná čísla. Jsou užitečné třeba pro hry, ve kterých se hází kostkou nebo tahají náhodné karty.
Opět nejsou potřeba tak často a je potřeba je naimportovat.
Tentokrát z modulu random
:
from random import randrange, uniform
Pak už se dají použít:
randrange(a, b) # náhodné celé číslo od a do b-1
uniform(a, b) # náhodné reálné číslo od a do b
Pozor na to, že randrange(a, b)
nikdy nevrátí samotné b
.
Pokud potřebuješ náhodně vybrat ze tří možností,
použij randrange(0, 3)
,
což vrátí 0
, 1
, nebo
2
:
from random import randrange
cislo = randrange(0, 3) # číslo je 0, 1, nebo 2
if cislo == 0:
print('Kolečko')
elif cislo == 1:
print('Čtvereček')
else: # tady musí být číslo 2
print('Trojúhelníček')
Pamatuj, když importuješ z modulu random
, nesmí se tvůj soubor
jmenovat random.py
.
Python dává k dispozici obrovské množství dalších funkcí a modulů, i když ne všem budeš ze začátku rozumět. Všechny jsou – anglicky – popsány v dokumentaci Pythonu, např. vestavěné funkce, matematika.