Hodnoty, proměnné, funkce

Ukážeme si jak Pythonu posílat jednoduché příkazy a uvidíme, co nám odpoví.

Základy Pythonu

V této kapitole si představíme úplné základy programování v Pythonu. Ještě nebudeme psát celé programy, ale budeme zatím Pythonu posílat jednotlivé příkazy a uvidíme, co nám odpoví.

Abychom si mohli s Pythonem povídat, musíme spustit takzvanou Python konzoli. To je prostředí, ve kterém můžeme s Pythonem komunikovat a posílat mu příkazy.

Pokud pracujete pod Windows, Python konzoli spustíte tak, že do terminálu napíšete příkaz

python

Pokud pracujete na Macu nebo Linuxu, správný příkaz je

python3

Hodnoty

ValuesHodnoty představují všechny možné druhy dat, se kterými můžou naše programy pracovat. Hodnoty se dle způsobu použití dělí do různých kategorií zvaných data typesdatové typy. Datových typů existuje velké množství. V tuto chvíli si představíme ty nejzákladnější - celá čísla a desetinná čísla.

Celá čísla

Nejjednodušší datový typ jsou integerscelá čísla. Pod tento typ patří hodnoty jako 12, 1321500, -5, 0 a podobně. Pokud do Python konzole napíšete hodnotu, Python vám ji vypíše zpátky, což znamená, že vám rozumí 🙂.

>>> 127
127

Desetinná čísla

S celými čísly bychom si dlouho nevystačili. Dalším datovým typem tedy budou floating point numbersdesetinná čísla, např. 13.4, 6.0, -0.0001, 0.0 apod. Pozor, že programátoři vždycky píší desetinná čísla s tečkou, nikoliv s čárkou.

Aritmetické operátory

Nyní už máme prostředky k tomu, abychom mohli pomocí Pythonu něco spočítat. V Pythonu máme k dispozici běžné aritmetické operátory:

  • sčítání: +
  • odčítání: -
  • násobení: *
  • dělení: /

Díky těmto operátorům můžeme Python použít jako kalkulačku a psát arithmetic expressionsaritmetické výrazy jako ve škole.

>>> 12 * 13 + 10
166
>>> (13.4 - 1.4) / 4
3.0

Všimněte si, že můžeme používat kulaté závorky, pokud potřebujeme změnit prioritu operací.

Proměnné

Při komplikovanějších výpočtech se nám často stane, že si potřebujeme nějaký mezivýpočet uložit pro pozdější použití. K tomu nám slouží takzvané variablesproměnné. Proměnná je jakási pojmenovaná krabička nebo šuplík, do kterého si můžeme uložit nějakou hodnotu, abychom ji neztratili a mohli ji používat v dalších výpočtech.

Můžeme například v rámci dietního programu spočítat, kolik vanilkových věnečků denně jsme spořádali za posledních 5 dní.

>>> celkem = 1 + 2 + 4 + 1 + 6
>>> prumer = celkem / 5

Jména proměnných

Už od úplných začátků s programováním je dobré učit se dobrým návykům, které budou později prospěšné nejen vám, ale hlavně lidem ve vašem okolí. Jedním z takových návyků je správné pojmenovávání proměnných.

  1. Název proměnné by neměl začínat velkým písmenem, např. Pocet. Takové názvy jsou rezervované pro speciální typy proměnných, ke kterým se v tomto kurzu dostaneme až téměř na konci.
  2. Název proměnné by neměl obsahovat diakritiku, např. počet. Programovací jazyky vznikaly v anglickém prostředí, kde se diakritika nepoužívá, takže si s ní většina jazyků neporadí.
  3. Víceslovné proměnné nesmí obsahovat mezeru, např. pocet hodin. To by si Python myslel, že to jsou dvě proměnné za sebou a nevěděl by co s tím. Pokud chcete proměnnou s více slovy, použijte takzvanou camel casevelbloudí notaci pocetHodin nebo snake casehadí notaci pocet_hodin.
  4. Vždy proměnnou pojmenujte tak, aby její název jasně napovídal, co se uvnitř ní nachází. Například proměnná pocet_hodin jasně říká, že v ní bude uložen asi nějaký počet hodin. Můžeme podlehnout touze název proměnné zkrátit například na pcthdn, aby se nám lépe psala. Až ovšem někdo další bude takový program číst, bude mlátit hlavou do stolu, cože proboha znamená zkratka pcthdn.
  5. Naposledy je dobré si uvědomit, že programy i programátoři se téměř vždy pohybují v mezinárodním prostředí. Takže je vždycky lepší pojmenovávat proměnné anglicky. V tomto kurzu ještě tohle pravidlo trošku rozvolníme, ale i tak si můžete začít zvykat na proměnné s názvem number_of_hours.

Nástrahy

Dejte pozor na to, že Python není Excel. Do proměnné se jako do šuplíku ukládá pouze hodnota a nikoliv celý výpočet. Pokud tedy napíšeme například

>>> sazba = 350
>>> vyplata = 8 * sazba

bude v proměnné vyplata uložena hodnota 2800. Jestliže potom změníme hodnotu v proměnné sazba na něco jiného, například

>>> sazba = 420

v proměnné vyplata bude nadále uložena hodnota 2800. Pokud chceme výsledek výpočtu aktualizovat, musíme jej spustit znova.

>>> vyplata = 8 * sazba

Cvičení: Hodnoty, proměnné

1

Výplata

pohodička
  1. Spočítejte svůj měsíční příjem víte-li, že pracujete 7 hodin denně se mzdou 450 Kč na hodinu. Řekněme, že měsíc má 21 pracovních dní.
  2. Uložte si počet pracovních hodin za den do proměnné hodin, hodinovou mzdu do proměnné mzda a počet pracovních dní do proměnné dni. Spočítejte svou výplatu s použitím těchto proměnných.

Funkce

S čísly jsme zatím byli schopní pracovat pouze pomocí aritmetických operátorů. To nám ale brzy nebude stačit a budeme potřebovat složitější operace, kterým říkáme functionfunkce.

Funkce je nějaký komplikovanější výpočet zabalený do jakési krabičky. Této krabičce dáme nějaké jméno, abychom jej mohli používat na různých místech v našem programu.

Dobrým příkladem je funkce round(), která pro nás dělá zaokrouhlování. Můžeme tedy psát

>>> round(3.4)
3

Tomuto zápisu se říká function callvolání funkce. Když funkci voláme, předáváme jí takzvaný argumentargument, v našem případě číslo 3.4. Když funkci zavoláme s nějakým argumentem, funkce takzvaně returnvrátí výsledek.

Funkci si můžeme představit například jako topinkovač. Topinkovač pro nás dělá nějakou užitečnou činnost, kterou chceme často opakovat (opéká topinky). Má svoje jméno (topinkovač). Do topinkovače dáme chleba (argument) a spustíme je (zavoláme). Topinkovač chvíli pracuje a pak nám vrátí výsledek - topinky. Důležité je, že nemusíme řešit jak to topinkovač vlastně dělá, že dokáže opéct chleba. Důležité pro nás je, že to umí a že jej můžeme kdykoliv použít.

Toaster

Seznamy

Zatím jsme byli schopní do jedné proměnné uložit pouze jednu hodnotu. Pro práci s daty ale budeme potřebovat pracovat s větším množstvím hodnot než pouze s jednou. K tomu nám poslouží takzvané listsseznamy.

Představme si, že si chci zaznamenat počet vanilkových věnečků snědených za posledních 7 dní. V Pythonu si můžu pro tento účel vytvořit seznam, který si uložím do vhodně pojmenované proměnné.

>>> venecky = [1, 2, 4, 1, 6, 0, 1]

Chceme-li přistoupit k jednotlivým hodnotám uvnitř seznamu, použijeme k tomu hranaté závorky.

>>> venecky[0]
1
>>> venecky[4]
6

POZOR! Programátoři jsou podivné bytosti, které vždy počítají od nuly, nikoliv od jedničky. Proto také první hodnota v našem seznamu má index 0.

Snadno také můžeme některou hodnotu v seznamu změnit. Například když si vzpomeneme, že jsme trošku zalhali ohledně konzumace věnečků v sobotu:

>>> venecky[5] = 12

Z jednoho seznamu můžeme také získat menší kusy podle zadaných mezí

>>> venecky[2:5]
[4, 1, 6]
>>> venecky[:3]
[1, 2, 4]
>>> venecky[3:]
[1, 6, 12, 1]

Vnořené seznamy

Seznam může obsahovat jakékoliv hodnoty, tedy nejen celá čísla. Nezapomeňte, že seznamy jsou také hodnoty, takže jeden seznam může obsahovat jiný seznam jako svůj prvek. Například takto:

>>> seznam = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Rozmyslete si, co vypíšou následující výrazy:

>>> seznam[0][1]
>>> seznam[2][0]
>>> seznam[1:][1]
>>> seznam[:1][2]

Užitečné funkce nad seznamy

Pro práci se seznamy se nám může hodit několik funkcí:

len() : Vrátí délku seznamu

sum() : Vrátí součet všech prvků v seznamu

min() : Vrátí nejmenší prvek seznamu

max() : Vrátí největší prvek seznamu

sorted() : Vrátí setříděný seznam

Cvičení: Seznamy

2

Mějme seznam pohybů na nějakém bankovním účtu:

pohyby = [1200, -250, -800, 540, 721, -613, -222]
  1. Vypište v pořadí třetí pohyb z uvedeného seznamu.
  2. Vypište všechny pohyby kromě prvních dvou.
  3. Vypište kolik je všech pohybů dohromady
  4. Pomocí volání vhodných funkcí vypište nejvyšší a nejnižší pohyb.
  5. Spočítejte celkový přírůstek na účtu za dané období. Pozor, že přírůstek může vyjít i záporný.