Ukažme si pár základních funkcí, které Python nabízí.
Tato kapitola ukazuje výběr z nástrojů, které ti Python nabízí. 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 matreriá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 ho mít ze začátku při ruce. Když narazíš na úkol, který nevíš jak vyřešit, projdi si ho 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
zase 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 na 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 tří 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), a pro řetězce str
(z angl. string).
int(x) # převod na celé číslo
float(x) # převod na reálné číslo
str(x) # převod na řetězec
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 jako:
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 sin, cos, tan, sqrt, floor, ceil
Naimportované funkce pak můžeš použít:
sin(uhel) # sinus
cos(uhel) # kosinus
tan(uhel) # tangens
sqrt(cislo) # druhá odmocnina
floor(cislo) # zaokrouhlení dolů
ceil(cislo) # zaokrouhlení nahoru
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.