Užitečné funkce #

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.

Vstup a výstup #

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:

  • Je input „normální“ funkce, nebo procedura?
  • Co bere funkce input jako argument?
  • Jaká je návratová hodnota funkce input?

Řešení

Převádění typů #

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.

Převádění a 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

Matematické funkce #

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í.

Náhoda #

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.

A další #

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.