Program v Pythonu se skládá z více příkazů, které vhodným způsobem kombinujeme:

  • Sekvence příkazů znamená, že prostě voláme příkazy jeden po druhém. Věnujeme při tom pozornost jejich výběru a řazení.
  • Podmíněný příkaz nám umožňuje některé příkazy vykonat, jen pokud je splněná zadaná podmínka.
  • Cyklus for a while využíváme pro opakované spouštění příkazů. Každý z těchto cyklů má trochu jiné použití a je dobré si důkladně procvičit oba dva.
  • Řídicí struktury můžeme do sebe vnořit, např. mít podmínku uvnitř cyklu. Samostatně vyčlené máme téma vnořené cykly, protože to je oblast, se kterou začátečníci typicky bojují.
  • Programy dělíme do funkcí, které nám umožňují části kódu opakovaně používat.

Pro úplné začátečníky v Pythonu může být užitečné si jako rozcvičku projít cvičení na základy algoritmického myšlení, kde je možné si základy použití cyklů a podmínek procvičit formou grafického programování.

Podmíněný příkaz (if) v Pythonu

Přejít ke cvičením na toto téma »

Podmíněné vykonání příkazu zapisujeme pomocí if. Jako podmínku můžeme použít libovolný logický výraz. Podmíněně můžeme vykonat také více příkazů. Blok příkazů vyznačujeme odsazením:

Else větev

Můžeme také říct, co se má stát, když podmínka splněna není. K tomu slouží příkaz else, který je následovaný odsazeným blokem příkazů:

Jednotlivým variantám výpočtu říkáme větve a podmíněný příkaz můžeme také označovat jako větvení.

Vícenásobné větvení

Pokud chceme testovat více možností, můžeme použít konstrukci if / elif / else. V některých programovacích jazycích se pro vícenásobné větvení používá příkaz switch. Tento příkaz v Pythonu nemáme, vystačíme si s využitím elif. Příklad:

Z if/elif větví se provede maximálně jedna z nich –⁠ ta první, u které je splněna podmínka. Pokud v uvedeném příkladě je v proměnné age uložena hodnota 15, vypíše se pouze text „školák“. Podmínka age < 65 je sice také splněna, ale k jejímu vyhodnocování již nedojde.

Vnořené větvení

Podmíněné příkazy můžeme i zanořovat, tj. některá z větví můžem mít další větvení. U následných větví pak musíme zvýšit odsazení. Můžeme tedy psát například:

V některých případech je však jednodušší a přehlednější místo vnořeného kódu použít jednoduchý podmíněný příkaz s podmínkou využívající logické operace. Například druhý uvedený příklad můžeme zjednodušit takto:

Cykly při programování využíváme pro opakování skupiny příkazů. Opakování označujeme často pojmem iterace.

Cyklus for využíváme, pokud dopředu víme, kolik opakování bude cyklus mít. V ostatních případech využíváme cyklus while.

Jednoduchý for cyklus

Základní využití cyklu for je pro prosté opakování sady příkazů. Pomocí for i in range(10) zopakujeme 10× sadu příkazů. Příkazy, které se mají opakovat, musíme odsadit. Takto tedy vypíšeme desetkrát Ahoj:

Řídící proměnná

V průběhu cyklu se mění hodnota řídící proměnné (ve výše uvedeném příkladu je to i). V každém opakování cyklu tak můžeme provést něco trochu jiného v závislosti na aktuální hodnotě této proměnné. Jakých hodnot řídící proměnná nabývá určuje část za in. Pokud použijeme základní range, bude se řídící proměnná postupně zvětšovat o jedničku. Tento cyklus například vypíše čísla od 0 do 9:

V rámci cyklu můžeme využívat více proměnných, pouze u řídící proměnné se však hodnota mění automaticky. Uvažme tento příklad:

Řídící proměnnou cyklu je x, jehož hodnota se tedy bude postupně měnit (od 0 po 9). U proměnné y se bude hodnota měnit, protože v rámci cyklu máme přiřazovací příkaz do y. Hodnota proměnné z zůstane ve všech opakováních stejná, protože z není řídící proměnná ani do ní v cyklu nic nepřiřazujeme.

Využití range

Při základním použití kombinujeme for cyklus s funkcí range, která vrací interval čísel a řídící proměnná následně nabývá hodnot z tohoto intervalu.

Pozor: V informatice často počítáme od nuly (nikoliv od jedničky jako normální lidi). Na to narážíme i zde: range(n) vrací hodnoty od 0 do n-1.

Pokud funkci range zadáme dva parametry, tj. voláme range(a, b) dá nám interval čísel od a do b-1. Můžeme zadat i třetí parametr, který udává délku skoku. Příklady:

For cyklus se dá využít nejen ve spojení s range, ale i obecněji. Můžeme například použít seznamy:

Ukázky použití for cyklu

Sudá a lichá

Výpis informace o sudosti a lichosti prvních n čísel:

Součet řady čísel

Výpočet součtu čísel od 1 do n:

Mocniny dvojky

Výpis informaci o prvních n mocninách dvojky:

Cykly při programování využíváme pro opakování skupiny příkazů. Opakování označujeme často pojmem iterace.

Cyklus while využíváme, pokud dopředu nevíme, kolikrát se bude cyklus opakovat. Pokud dopředu počet opakování známe, využíváme cyklus for.

Základní použití

While cyklus se opakuje tak dlouho, dokud je splněna řídící podmínka cyklu (v následující ukázce jde o n > 5). Tělo cyklu (příkazy, které se mají opakovat) vyznačujeme odsazením.

Tímto cyklem vypisujeme mocniny dvou, dokud nepřekročí stovku:

Nula i nekonečno opakování

Podmínka se vyhodnocuje ještě před prvním vykonáním těla cyklu. Pokud není splněna, tak se tělo while cyklu neprovede ani jednou:

Může se stát, že while cyklus neskončí nikdy. Tento program vypisuje donekonečna jedničky:

Takový nekonečný cyklus většinou znamená chybu v programu. Typickou chybou je, že zapomeneme v těle cyklu měnit hodnotu proměnné vystupující v podmínce cyklu. Tuto situaci označujeme jako „zacyklení programu“.

Ukázky použití while cyklu

Mocniny dvojky

Výpis všech mocnin dvojky menších než 1000:

Sčítačka

Následující program načítá čísla od uživatele a průběžně je sčítá. Výpočet se ukončí, když uživatel zadá číslo 0.

Vnořené cykly v Pythonu

Přejít ke cvičením na toto téma »

K opakování příkazů slouží základní cyklus for a cyklus while.

V těle cyklu mohou být nejen základní příkazy, ale třeba i další cyklus – ten nazýváme vnořený cyklus. Pro jeho použití nepotřebujeme žádný nový příkaz. Prostě jen cyklus zapíšeme (a odsadíme) uvnitř jiného cyklu. Vnořené cykly se ovšem vyplatí trénovat, jsou častým zdrojem problémů.

Příklad:

Tento program vypisuje tuto tabulku:

Vnitřní cyklus (s řídící proměnnou j) vypisuje jednotlivé řádky. Vnější cyklus (s řídící proměnnou i) pak zařídí vypsání celé tabulky. Na tomto příkladu je dobře vidět důležitá role správného odsazení. Příkaz print() způsobuje odřádkování – používáme jej v programu vždy po výpisu kompletního řádku.

Co by se stalo, kdybychom příkaz print() odsadili více či méně?

  • Kdybychom print() odsadili o úroveň více:
    • Byl by součástí vnitřního cyklu takže by se odřádkování provedlo po každém čísle.
    • Výstupem programu by pak byla řada čísel pod sebou.
  • Kdybychom print() odsadili o úroveň méně:
    • Byl by zcela mimo cykly, takže by se odřádkování provedlo jen jednou, až úplně nakonec.
    • Výstupem programu by pak byla řada čísel v jednom řádku.

Funkce je pojmenovaný blok příkazů. Funkcím můžeme předávat argumenty. Funkce vrací návratovou hodnotu.

Definice funkce

Python nabízí celou řadu vestavěných funkcí, tedy takových, které jsou již připravené tvůrci jazyka. Příkladem je třeba funkce len, která počítá délku řetězce.

Vlastní funkci definujeme pomocí klíčového slova def:

Tímto jsme definovali funkci say_hello, která má parametr name. Funkce může mít i více parametrů.

Volání funkce

Tím, že definujeme funkci, se ještě nevykoná. Aby se funkce vykonala, musíme ji zavolat. To uděláme tak, že napíšeme jméno funkce a do závorek předáme konkrétní argument:

Některé funkce jsou bez parametrů. U jejich volání musíme závorky stále uvést, např. say_goodbye().

Návratová hodnota

Funkce může vracet návratovou hodnotu pomocí klíčového slova return. Následující funkce vypočítá a vrátí faktoriál.

Takováto funkce sama o sobě nic neprovede, pouze vrátí hodnotu, se kterou můžeme dále pracovat.

Příkaz return ukončuje provádění funkce. Při volání následující funkce se tedy vypíše pouze foo:

Rozdíl return a print

Častý zdroj problémů u začátečníků je správné rozlišování mezi použitím print a return ve funkcích.

Použití print způsobí okamžitý výpis hodnoty, nelze však s touto hodnotou nijak dál pracovat.

Použití return ukončí funkci a vrátí hodnotu. Ta se automaticky nevypíše, ale můžeme ji přiřadit do proměnné a dále s ní pracovat.

NAPIŠTE NÁM

Děkujeme za vaši zprávu, byla úspěšně odeslána.

Napište nám

Nevíte si rady?

Nejprve se prosím podívejte na časté dotazy:

Čeho se zpráva týká?

Vzkaz Obsah Ovládání Přihlášení Licence