Nauč se Python > Kurzy > Začátečnický kurz PyLadies > Funkce a cykly > Užitečné funkce

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

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 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:

  • 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 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

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

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.


Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.