1. týden: poznámky

Python

Python je univerzální programovací jazyk. Je to relativně vysokoúrovňový jazyk (například mnohem vyšší úrovně než C). První verze Pythonu se objevila v roce 1990, takže je mu nyní 36 let. Původně šlo o jednoduchý jazyk, který se postupem času stal složitějším. Základ jazyka však stále působí jednoduše a v tomto kurzu se budeme zabývat především jím.

Python je poměrně flexibilní a výkonný. Je také mimořádně rozšířený. Podle GitHubu je Python již několik posledních let druhým nejpopulárnějším jazykem (po JavaScriptu).

Python je však podstatně méně efektivní než jazyky jako C nebo C++ (alespoň ve své standardní implementaci nazývané CPython). Proto se obvykle nepoužívá pro programovací úlohy, u nichž je důležitá efektivita. Přesto zůstává velmi praktickým a užitečným jazykem.

instalace Pythonu

Chcete-li do počítače nainstalovat interpret Pythonu, postupujte následovně:

Linux

Python pravděpodobně najdete nainstalovaný ve výchozím nastavení. Pokud ne, použijte správce balíčků svého systému. (V Ubuntu nebo Debianu doporučuji použít Synaptic.) Najděte balíček pro Python 3. Na mnoha systémech (např. Ubuntu) se jmenuje python3. Nainstalujte jej.

macOS

Ve webovém prohlížeči přejděte na stránku pro stažení Pythonu. Klikněte na tlačítko „Download Python 3.14.7“ (pokud bude k dispozici novější verze, může mít vyšší číslo). Po dokončení stahování instalačního programu jej spusťte a potvrďte všechna výchozí nastavení instalace.

Windows

Ve webovém prohlížeči přejděte na stránku pro stažení Pythonu. Klikněte na tlačítko „Download Python 3.14.7“ (pokud bude k dispozici novější verze, může mít vyšší číslo). Zobrazí se zpráva „What do you want to do with python-3.14.7-amd64.exe from python.org?“. Klikněte na Run.

Nyní se zobrazí okno „Install Python 3.14.7 (64-bit)“. V tomto okně nezapomeňte zaškrtnout políčko „Add Python 3.14 to PATH“. Poté klikněte na „Install Now“. Zobrazí se zpráva „Do you want to allow this app to make changes to your device?“. Klikněte na Yes.

otevření okna terminálu

Linux

V mnoha distribucích to provedete stisknutím klávesy Super a následným zadáním slova „terminal“.

macOS

Stiskněte Command + Space, zadejte „terminal“ a stiskněte Enter.

Windows

Stiskněte klávesu Windows, zadejte „command“ a stiskněte Enter.

spuštění Pythonu z příkazového řádku

Na všech výše uvedených systémech by při úspěšné instalaci Pythonu mělo jeho spuštění vést k výstupu podobnému tomuto:

$ python3
Python 3.14.4 (main, Aug 20 2026, 10:41:58) [GCC 15.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Výzva „>>>“ výše označuje, že se nacházíte v interaktivním interpretu Pythonu, známém také jako REPL (= read-eval-print loop, tedy smyčka čtení–vyhodnocení–výpisu). V interpretu můžete zadávat výrazy, které se vyhodnotí:

>>> 200 + 300
500
>>> 200 * 300
60000

Na některých systémech můžete Python spustit zadáním pouze „python“ místo „python3“.

Chcete-li interpret ukončit, zadejte Ctrl+D (v Linuxu nebo macOS) nebo Ctrl+Z a poté Enter (ve Windows). Tyto klávesové zkratky označují konec vstupu. Brzy se s nimi v tomto kurzu setkáme znovu.

int a float

První dva datové typy Pythonu, které se naučíme, jsou:

S těmito číselnými typy můžeme používat následující aritmetické operátory:

Všimněte si, že celá čísla mohou být v Pythonu libovolně velká:

>>> 2 ** 100
1267650600228229401496703205376
>>> 2 ** 1000
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376

Naproti tomu čísla s plovoucí desetinnou čárkou jsou uložena v pevně daném množství paměti, takže mohou obsahovat pouze určitý počet číslic:

>>> 2.0 ** 100
1.2676506002282294e+30

Výše uvedené e+30 znamená „krát 1030“. Všimněte si, že toto číslo s plovoucí desetinnou čárkou obsahuje pouze prvních 17 číslic hodnoty 2100, kterou jsme výše vypsali jako celé číslo.

Možný rozsah hodnot čísel s plovoucí desetinnou čárkou je v Pythonu velký, ale není nekonečný:

>>> 2.0 ** 1000
1.0715086071862673e+301

>>> 2.0 ** 10000
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: (34, 'Numerical result out of range')

Operátor // dělí dvě celá čísla a výsledek zaokrouhluje směrem dolů na nejbližší celé číslo:

>>> 20 // 6
3

Operátor % vypočítává zbytek po dělení dvou celých čísel, tedy zbytek, který zbude po celočíselném dělení:

>>> 20 % 6
2

Všimněte si, že 20 = 3 * 6 + 2, tedy 20 = (20 // 6) * 6 + 2. To můžeme zobecnit: pro libovolná celá čísla a a b:

a = (a // b) * b + (a % b)

Mimochodem, při zápisu číselných konstant v Pythonu můžeme podtržítka umístit kamkoli. To může zvýšit jejich čitelnost:

>>> 1_000_000_000 + 100_000
1000100000

bool

V Pythonu typ bool představuje logickou hodnotu, která je buď True, nebo False. Tyto konstanty jsou součástí jazyka:

>>> True
True
>>> False
False

Python obsahuje porovnávací operátory, které mohou porovnávat čísla (nebo jiné druhy hodnot):

Každý z těchto operátorů vytváří logickou hodnotu:

>>> 4 < 5
True
>>> 5 < 2
False
>>> 8 == 8
True
>>> 8 != 9
True

logické operátory

Python má logické operátory, které mohou kombinovat logické hodnoty:

Například:

>>> True or False
True
>>> True and False
False
>>> not True
False
>>> not False
True

Tyto logické operátory často používáme ke kombinování porovnání:

>>> 3 < 5 and 10 < 20
True
>>> not 10 <= 50
False

string

Řetězec je posloupnost znaků, tedy kus textu. V Pythonu můžeme řetězce zapisovat v jednoduchých nebo dvojitých uvozovkách:

>>> 'potato'
'potato'
>>> "grapefruit"
'grapefruit'

Jednoduché ani dvojité uvozovky nejsou součástí řetězce – pouze označují, že znaky uvnitř tvoří řetězec.

Řetězce obvykle zapisujeme v jednoduchých uvozovkách, dvojité uvozovky jsou však vhodné, když chceme zapsat řetězec, který uvnitř obsahuje jednoduché uvozovky:

>>> "she didn't say why"
"she didn't say why"

Všimněte si, že některé operátory, které jsme viděli výše, fungují i s řetězci. Operátor + spojí dva řetězce:

>>> 'pizza' + 'pie'
'pizzapie'

Operátor * spojí více kopií řetězce za sebou:

>>> 3 * 'orange'
'orangeorangeorange'
>>> 'xyz' * 10
'xyzxyzxyzxyzxyzxyzxyzxyzxyzxyz'

Porovnávací operátory, které jsme viděli výše, porovnávají řetězce abecedně:

>>> 'house' < 'sky'
True
>>> 'xyzzy' == 'xyzzy'
True

datové typy: shrnutí

Zde jsou vestavěné datové typy, které jsme se dosud naučili:

Tyto typy budou dostačující pro psaní mnoha programů. Později se seznámíme s dalšími vestavěnými datovými typy a dokonce se naučíme vytvářet vlastní typy.

převody typů

Každý typ, který jsme viděli, má přidruženou funkci pro převod typu:

V našich programech budeme zejména často převádět řetězce na celá čísla:

>>> int('52')
52

použití IDE

Pro psaní programů v Pythonu budete pravděpodobně chtít používat IDE (integrované vývojové prostředí) namísto obyčejného textového editoru. K dispozici je mnoho různých IDE. Obecně doporučuji Visual Studio Code, které je open source, funguje na všech hlavních platformách (tj. operačních systémech) a podporuje mnoho různých programovacích jazyků včetně Pythonu.

Všimněte si, že (poněkud matoucím způsobem) Visual Studio Code není stejný program jako Visual Studio, což je starší IDE s uzavřeným zdrojovým kódem, které funguje pouze ve Windows. Při čtení dokumentace online se ujistěte, že se týká programu, který skutečně používáte. (Visual Studiu se v tomto kurzu nebudu věnovat.)

Ve Visual Studio Code nezapomeňte nainstalovat rozšíření Python a Pylance. Umožní IDE rozpoznávat chyby ve vašem Pythonovém kódu a upozorňovat na ně při jeho psaní.

Ve Visual Studio Code obecně doporučuji otevřít složku, ve které můžete mít jeden nebo více zdrojových souborů. Spusťte Visual Studio Code a v nabídce zvolte File / Open Folder…. Při příštím spuštění Visual Studio Code se dříve otevřená složka otevře automaticky.

Po otevření složky v ní můžete vytvořit nový zdrojový soubor. Klikněte pravým tlačítkem v levém panelu a z kontextové nabídky zvolte „New File…“, nebo klikněte nahoře na malou ikonu New File (vypadá jako dokument se znaménkem +). Podle konvence mají zdrojové soubory Pythonu vždy příponu „.py“.

Například vytvořte soubor hello.py a zadejte do něj tento text:

print('hello, world')

Toto je jednopříkazový Pythonový program, který vypíše řetězec. Soubor uložte. Nyní jej spusťme. Jednou z možností je kliknout na ikonu Run Python File, která vypadá jako malý trojúhelník v pravém horním rohu okna editoru. Po kliknutí se program spustí v panelu Terminal ve spodní části okna Visual Studio Code.

Alternativně můžete nejprve otevřít interní okno terminálu stisknutím Ctrl+` a poté do něj zadat python hello.py, čímž program spustíte.

Já však obecně dávám přednost spouštění Pythonových programů v externím okně terminálu. Otevřete je pomocí Ctrl+Shift+C (v Linuxu nebo Windows) nebo Command+Shift+C (v macOS). Otevře se okno terminálu, jehož aktuální adresář bude stejný jako složka, kterou si prohlížíte ve Visual Studio Code.

Po otevření externího terminálu můžete spustit Python a předat mu název zdrojového souboru:

$ python hello.py
hello, world
$ 

funkce „input“ a „print“

Téměř každý program načítá vstup a vytváří výstup. V Pythonu k tomu budeme používat následující dvě vestavěné funkce:

Standardní vstup obvykle přichází z okna terminálu, ve kterém program spouštíte. Podobně se standardní výstup obvykle vypisuje do okna terminálu. (Brzy uvidíme, že pokud chcete, můžete nastavit standardní vstup a výstup tak, aby používaly soubor.)

Například zde je program:

print('What is your name?')
name = input()
print('hello', name)

Spusťme jej:

$ python hello.py 
What is your name?
fred
hello fred
$

Všimněte si, že funkce input() může přijmout volitelný parametr určující výzvu (prompt), která se vypíše před načtením vstupu. Předchozí program bychom například mohli přepsat takto:

name = input('What is your name? ')
print('hello', name)

Uživatel pak zadá vstup na stejném řádku, na kterém byla vypsána výzva:

$ py hello.py
What is your name? joe
hello joe
$ 

Jak bylo uvedeno výše, input() vrací řetězec. Často zavoláme int(), abychom výsledek funkce input() převedli na celé číslo:

x = int(input('Enter x: '))
print(x * x)

$ py hello.py
Enter x: 111
12321
$

proměnné

V příkladech z předchozí části jsou name a x proměnné. V Pythonu můžeme proměnné přiřadit hodnotu libovolného typu:

>>> x = 17
>>> y = 'mountain'
>>> x
17
>>> y
'mountain'

Během běhu programu se hodnoty proměnných mohou v průběhu času měnit. Program

x = 100
print(x + 2)
x = 200
print(x + 2)

vytvoří výstup

102
202

Jak vidíme v příkladech výše, operátor přiřazení „=“ přiřadí proměnné novou hodnotu. Dávejte pozor, abyste jej odlišili od porovnávacího operátoru „==“, který testuje, zda jsou dvě hodnoty stejné.

Často proměnné přiřadíme novou hodnotu vytvořenou z její staré hodnoty:

>>> x = 77
>>> x = x + 2
>>> x
79

Příkaz x = x + 2 znamená „nová hodnota x je stará hodnota x plus 2“. (Naproti tomu v matematice je „x = x + 2“ rovnice bez řešení.)

if, else, elif

Pomocí příkazů if a else můžeme podmíněně provádět kód:

x = int(input('Enter x: '))

if x > 1000:
    print("That's a big number.")
else:
    print("It's not so big.")
    print("Try to think of something bigger.")

Příkaz if přijímá logickou podmínku. Pokud je podmínka pravdivá, provede řádky následující po if; v opačném případě provede řádky následující po else. Všimněte si, že každý z těchto bloků může obsahovat jeden nebo více řádků kódu. Všimněte si také, že Python používá odsazení (prázdné znaky na začátku řádku) k rozpoznání těchto bloků.

Příkaz if nemusí obsahovat část else. Pokud ji neobsahuje a podmínka je nepravdivá, neprovede se nic.

Příkaz if může obsahovat jednu nebo více částí elif. elif znamená „else if“. Například:

if x > 1000:
    print("That's a big number.")
elif x > 100:
    print("It's kind of big.")
elif x > 0:
    print("It's not very big, but at least it's positive.")
elif x == 0:
    print("It's zero.")
else:
    print("It's negative.")

komentáře

Na libovolném řádku Pythonového programu jsou všechny znaky za znakem „#“ komentářem a ignorují se. Komentáře jsou užitečné pro přidávání vysvětlujícího textu do programů:

x = int(input())
if x % 2 == 0:  # x is even
    x = x // 2
else:           # x is odd
    x = 3 * x + 1

Ve Visual Studio Code můžete stisknutím Ctrl+/ zakomentovat nebo odkomentovat aktuálně vybraný blok kódu.

další operátory přiřazení

Jak víme, příkaz x = x + 2 znamená „přičti k proměnné x hodnotu 2“.

Ve skutečnosti je tento typ operace tak běžný, že Python má pro něj speciální operátor přiřazení +=, který umožňuje tento příkaz zapsat stručněji:

>>> x = 10
>>> x = x + 2    # add 2 to x
>>> x
12
>>> x += 2       # add 2 to x
>>> x
14

Operátory -=, *=, /=, //= a %= fungují podobně. Například:

>>> y = 100
>>> y *= 20   # multiply y by 20
>>> y
2000

Inkrementovat proměnnou znamená přičíst k ní 1. Podobně dekrementovat proměnnou znamená odečíst od ní 1:

x += 1          # increment x
y -= 1          # decrement y

cykly while

Cyklus while provádí vnořený blok příkazů (tělo cyklu), dokud je podmínka pravdivá. Například:

x = int(input('Enter x: '))

while x > 0:
    print(x)
    x = x - 1

print('Liftoff!')

Spusťme jej:

$ py count.py
Enter x: 10
10
9
8
7
6
5
4
3
2
1
Liftoff!
$

Zde je program, který pro libovolné N vypočítá součet celých čísel od 1 do N:

n = int(input('Enter n: '))

sum = 0

while n > 0:
    sum = sum + n
    n = n - 1

print('The sum is', sum)

Zkusme jej:

$ py sum.py
Enter n: 10
The sum is 55
$
print('The sum is', sum)

Nakonec zde je program, který odstraní všechny nuly na konci celého čísla v desítkové soustavě:

a = int(input('Enter a: '))

while a % 10 == 0:
    a = a // 10

print(a)

cykly for

Příkaz for prochází posloupnost hodnot. Může například procházet rozsah celých čísel:

for i in range(1, 5):
    print(i)

vytvoří

$ py hello.py
1
2
3
4
$

Všimněte si, že program vypsal čísla 1 až 4, ale ne 5. Je to proto, že v Pythonu range(a, b) vytváří posloupnost hodnot od a až po b, ale b už nezahrnuje. To může působit překvapivě. Později možná uvidíte, proč to v některých souvislostech dává smysl. Prozatím je to něco, na co si musíte zvyknout.

Pomocí for můžeme součet celých čísel od 1 do N vypočítat o něco snadněji:

n = int(input('Enter n: '))

sum = 0

for i in range(1, n + 1):
    sum = sum + i

print('The sum is', sum)

Ve skutečnosti může for procházet mnoho dalších druhů posloupností. Může například procházet všechny znaky v řetězci:

for c in 'hello':
    print(c)

Výsledkem je výstup

$ py hello.py
h
e
l
l
o
$