Python je v současnosti nejoblíbenější programovací jazyk pro výuku programování. Není to však jen výukový jazyk, je také široce prakticky používaný. Na Umíme programovat používáme Python 3.
Pokud chcete v Pythonu více programovat, doporučujeme nainstalovat si ho na vlastní počítač. Nicméně na to, abyste se naučili základy programování v Pythonu, vystačíte i s prohlížečem. Na Umíme programovat nabízíme spoustu cvičení a příkladů, které můžete řešit přímo na stránkách:
- Pro úplné začátky zkuste cvičení Rozhodovačka, kde pouze vybíráte z nabízených možností. Jak se trochu rozcvičíte, můžete zkusit Výstup programu, kde píšete odpověď na klávesnici.
- Ve cvičení Porozumění programům máte k dispozici vypracované příklady. Na nich se můžete podívat, jak programy v Pythonu vypadají. Ke každému příkladu je připravena série kontrolních otázek, pomocí kterých si můžete prověřit, jak programu rozumíte.
- Především si však zkuste samostatné programování. K tomu slouží cvičení Programování v Pythonu a Python želva. Program píšete přímo v prohlížeči, kde si ho můžete i spustit a hlavně automaticky otestovat, zda je správně.
Pro úplné začátečníky doporučujeme jako rozcvičku příklady ze sekce algoritmické myšlení, kde si lze základní koncepty vyzkoušet formou grafického programování.
Pro učitele na SŠ je dispozici stručný metodický text.

Rozhodovačka
Rychlé procvičování výběrem ze dvou možností.

Proměnné a číselné výrazy v Pythonu (lehké)
57 zadání
Typicky zabere: 6 min
Ukázka
Co vypíše program?x = 14
y = 5
print(x % y + 5)
Pokud je x = 3
a y = 4
, co se změní po provedení příkazu x = y
?Jak vypsat počet vteřin, které uběhnou během hours
hodin?
Proměnné a číselné výrazy v Pythonu (střední)
61 zadání
Typicky zabere: 9 min
Ukázka
Jaký je význam příkazux -= 1
?Jakou hodnotu bude mít na konci proměnná x?x = 7
x * 2
Jak přiřadit hodnotu n
do proměnné x
?
Logické výrazy v Pythonu (lehké)
71 zadání
Typicky zabere: 8 min
Ukázka
Co vypíše program?a = False and False
print(a)
Co vypíše program?a = False
b = True
c = a or b
print(a, b, c)
Existuje x, pro které podmínka platí?x <= 5 and x >= 5

Logické výrazy v Pythonu (střední)
94 zadání
Typicky zabere: 10 min
Ukázka
Jsou tyto výrazy ekvivalentní?# n je prirozene cislo
(n % 4 == 1) or (n % 4 == 2) or (n % 4 == 3)
n % 4 != 0
Existuje celé číslo x, pro které podmínka platí?x != x or x > x
Lze not v <= 5
zjednodušit na v > 5
?
Logické výrazy v Pythonu (těžké)
83 zadání
Typicky zabere: 14 min
Ukázka
Jsou tyto výrazy ekvivalentní?x > r or x > s
x > max(r, s)
Vyhodnoťte:(3 > 3) == (5 < 5)
Lze not x < 0
zjednodušit na x >= 0
?
Proměnné a výrazy: mix (lehké)
128 zadání
Typicky zabere: 5 min
Ukázka
Jak zjistit zbytek čísla x po dělení číslem y?Jak lze zjednodušit následující výraz?(x > y) or (x >= y)
Mají výrazy x / y + z
a x / (y + z)
vždy stejnou hodnotu?
Proměnné a výrazy: mix (střední)
155 zadání
Typicky zabere: 7 min
Ukázka
Jsou tyto výrazy ekvivalentní?(x % 3 == 0) == False
x % 3 != 0
Co vypíše program?x = 2
x = x + 3
x = x + 3
print(x)
Otestujte, že x dává zbytek 2 po dělení 7.
Podmíněný příkaz (if) v Pythonu (lehké)
43 zadání
Typicky zabere: 9 min
Ukázka
Zjednodušte podmíněný příkaz:if x > 0:
if y > 0:
print("mrkev")
else:
print("okurka")
else:
print("okurka")
Jaký příkaz musíme na začátku programu provést, aby program vypsal hodnotu 8?if x < 5:
x = x * 2
else:
x = x - 2
print(x)
Co vypíše program?t = "pes"
if t == "prase":
print("chrochta")
else:
print("steka")

Podmíněný příkaz (if) v Pythonu (střední)
46 zadání
Typicky zabere: 16 min
Ukázka
Existujex
, pro které se vypíše mrkev i celer?if x < 0:
x += 10
print("mrkev")
elif x > 0:
print("celer")
Ovlivní hodnota n
, kolik slov se vypíše?if n % 4 == 0:
print("mrkev")
elif n % 4 == 1:
print("celer")
elif n % 4 == 2:
print("okurka")
Existuje x
, pro které se vypíše mrkev i celer?if x > 0:
x -= 2
print("mrkev")
if x < 0:
print("celer")

Cyklus for v Pythonu (lehké)
45 zadání
Typicky zabere: 9 min
Ukázka
Co vypíše program?for i in range(5):
print(i+3)
Co vypíše program?for i in range(5):
x = i * 2
print(x)
Kolikrát se vypíše celer?for i in range(2):
print("celer")
for j in range(3):
print("mrkev")
print("celer")

Cyklus for v Pythonu (střední)
46 zadání
Typicky zabere: 13 min
Ukázka
Kolikrát se vypíše celer?for x in [10, 14, 21]:
if x % 7 == 0:
print("celer")
Zjednodušte program.i = 10
for x in range(n):
print(i)
i += 1
Vypíše následující program trojciferná čísla dělitelná současně 16 a 26?for i in range(100, 1000):
if x % 16 == 0 and x % 26 == 0:
print(x)

Cyklus while v Pythonu (lehké)
44 zadání
Typicky zabere: 10 min
Ukázka
Co vypíše program?a = 1
b = 5
while a <= b:
print(a)
b = b - 1
Vypíše se celer?x = 1
while x < 7:
print("mrkev")
x += 2
if x == 7:
print("celer")
Kolikrát se vypíše celer?:x = 3
while x < 10:
if x % 5 == 0:
print("celer")
x += 1

Cyklus while v Pythonu (střední)
48 zadání
Typicky zabere: 19 min
Ukázka
Zacyklí se program?x = 100
while x != 0:
if x % 10 == 1:
x -= 1
x -= 1
Zjednodušte program:x = 100
while x > 0 and x >= 0:
print(x)
x -= 1
Vypíše se víc celeru nebo mrkve?i = 21
while i > 1:
print("mrkev")
i -= 2
while i > 0:
print("celer")
i = i / 2

Funkce v Pythonu (lehké)
51 zadání
Typicky zabere: 9 min
Ukázka
Musí každá funkce obsahovatreturn
?Dojde k chybě?def f(x, y):
return x
f(23)
Co vypíše program?def test(x, y):
print(x, y)
test(3, 2)

Funkce v Pythonu (střední)
51 zadání
Typicky zabere: 12 min
Ukázka
Co vypíše program?def test(x):
x = x + 1
return x
a = 1
print(test(a))
Kolik je f(f(3))
?def f(x):
return x + 2
Může se funkce f zacyklit?def f(n):
x = 0
while stop(x, n) != False:
x += 1
def stop(x, n):
if x > n:
print(True)
else:
print(False)

Funkce v Pythonu (těžké)
56 zadání
Typicky zabere: 16 min
Ukázka
Ovlivní x hodnotu f(x)?def f(x):
x = double(x)
return x
def double(x):
print(2 * x)
Co vypíše program?def test(b, a):
print(a + b * 10)
a = 2
b = 3
test(a, b)
Dojde k chybě?def f(x):
return 2 * x
x = 1
y = 2
x = f(x + y)

Řízení výpočtu: mix (lehké)
183 zadání
Typicky zabere: 8 min
Ukázka
Co vypíše program?i = 1
while i < 50:
print(i)
i = i * 2
Kolik je f(1) + f(1)
?def f(x):
x += 1
return x
Co vypíše program?x = 5
while x < 10:
print(x)
x = x + 1

Řízení výpočtu: mix (střední)
191 zadání
Typicky zabere: 12 min
Ukázka
Je kód správně?def increase(x):
print(return x + 1))
Zjednodušte podmíněný příkaz:if not (x >= y and y >= x):
print("mrkev")
else:
print("okurka")
Co vypíše program?x = 6
if x < 10:
x = 2*x
print("XXXXX")
print("YYYYY")
if x < 10:
x = x/2
print("ZZZZZ")

Přehled datových typů (lehké)
73 zadání
Typicky zabere: 5 min
Ukázka
Co reprezentuje typ 'float'?Určete typ:"[7, 1, 8, 2]"
Co reprezentuje typ 'list'?
Přehled datových typů (střední)
80 zadání
Typicky zabere: 11 min
Ukázka
Pravda, nebo nepravda?'x' == "x"
Určete typ:round(4.6)
Dojde k chybě?str([1] + [2, 3])

Řetězce v Pythonu (lehké)
49 zadání
Typicky zabere: 5 min
Ukázka
Vytvořte celer:x = 'cel'
y = 'er'
Který příkaz změní hodnotu x na 'CELER'?x = 'Celer'
Co vypíše program?text1 = "petr"
text2 = "klic"
print(text1 + text2)

Řetězce v Pythonu (střední)
53 zadání
Typicky zabere: 7 min
Ukázka
Vytvořte smajlíka :)s = ':('
Vytvořte číslo 42.s = '17 42 35'
Určete hodnotu výrazu:chr(ord("a") + 1)

Řetězce v Pythonu (těžké)
54 zadání
Typicky zabere: 13 min
Ukázka
Co vypíše program?text = "kopec"
text[2] = "n"
print(text)
Pravda nebo nepravda?'mrkev'[-1] == 'mrkev'[4]
Kde je celer?x = 'cceelleerr'

Seznamy v Pythonu (lehké)
67 zadání
Typicky zabere: 6 min
Ukázka
Pravda nebo nepravda?len([42]) == 42
Co vypíše program?mylist = [1, 375, 48]
print(len(mylist))
Co vypíše program?name_list = ["Jana", "Pavel", "Martin"]
for i in range(len(name_list)):
print(name_list[len(name_list)-i-1])

Seznamy v Pythonu (střední)
85 zadání
Typicky zabere: 8 min
Ukázka
Dojde k chybě?a = [14, 15]
a[1][1] = 0
Najděte jedničku:a = [[0, 0], [1, 0]]
Pravda nebo nepravda?[10, 20] + [1, 2] == [11, 22]

Seznamy v Pythonu (těžké)
81 zadání
Typicky zabere: 14 min
Ukázka
Zjednodušte program:for i in range(len(a)):
print(a[i])
Zacyklí se program?a = [1, 2, 3]
for x in a:
a.append(x)
Určete hodnotu seznamu a
:a = [7, 1, 8]
b = a.copy()
b[0] = 0

Slovníky v Pythonu (lehké)
21 zadání
Typicky zabere: 6 min
Ukázka
Pomocí kterého příkazu získáme z uvedeného slovníku seznam hodnot (tj. dog, cat, parrot)?pets = {"Alice": "dog",
"Bob": "cat",
"Cyril": "parrot"}
Co vypíše program?person = {"name": "Peter",
"age": 23}
person["address"] = "Kocourkov 37"
print(person["name"])
print(person["address"])
Co vypíše program?person = {"name": "Peter",
"age": 23}
print(person["name"])
print(person["address"])

Objekty v Pythonu (střední)
13 zadání
Typicky zabere: 6 min
Ukázka
Co vypíše program?class Animal:
def __init__(self, name, legs):
self.name = name
self.legs = legs
animals = [Animal("dog", 4),
Animal("chicken", 2),
Animal("cat", 4),
Animal("fish", 0)]
for x in animals:
if x.legs > 2:
print(x.name)
Co platí o následujícím programu?class Person:
def __init__(self, name):
self.name = name
def describe(self):
print(self.name)
tom = Person("Tom")
tom.describe()
Co vypíše program?class Book:
def __init__(self, title, price):
self.title = title
self.price = price
def increase_price(x):
self.price += x
book = Book("Hobbit", 250)
book.increase_price(30)
print(book.price)

Datové typy: mix (lehké)
137 zadání
Typicky zabere: 5 min
Ukázka
Co vypíše program?mylist = [4, 1, 5, 3]
for i in range(len(mylist)-1):
print(mylist[i] + mylist[i+1])
Co vypíše program?fruits = {"apple": 5,
"banana": 10,
"orange": 2}
print(fruits.get("pear", 0))
Co vypíše program?mylist = [[8, 3], [4, 5]]
print(mylist[0][1])

Pexeso
Hledání dvojic, které k sobě patří.

Proměnné a číselné výrazy v Pythonu (střední)
6 zadání
Typicky zabere: 5 min
Ukázka
x = 52 * xx + (y * z)
Logické výrazy v Pythonu (střední)
4 zadání
Typicky zabere: 8 min
Ukázka
True or x
not x>5
x < 3 and x < 6

Přehled datových typů (střední)
6 zadání
Typicky zabere: 3 min
Ukázka
intstrcelé číslo
Psaná odpověď
Cvičení, ve kterém píšete odpověď na klávesnici.

Proměnné a číselné výrazy v Pythonu (lehké)
29 zadání
Typicky zabere: 5 min
Ukázka
x = 3
y = 2
x = x + y
print(x)
a = 2
a = 3
print(a*a)
x = 3
y = 2
print(x, y)

Podmíněný příkaz (if) v Pythonu (lehké)
13 zadání
Typicky zabere: 5 min
Ukázka
x = 4
y = 3
if x > y:
x = x + 1
else:
x = x - 1
print(x)
x = 3
if x < 5:
x = x + 1
else:
x = x - 1
print(x)
t = "pes"
if t == "prase":
print(t)
else:
print(t, t)

Řetězce v Pythonu (lehké)
21 zadání
Typicky zabere: 3 min
Ukázka
print(2*"a"+"b")
text1 = "5"
text2 = "8"
print(text1+text2)
text = "pes"
x = 3
print(text * x)

Seznamy v Pythonu (střední)
21 zadání
Typicky zabere: 4 min
Ukázka
mylist = ['x', 'a', 'c', 'e', 'y']
print(mylist[1])
mylist = [[8, 3], [4, 5]]
print(len(mylist))
mylist = [1, 2, 4]
print(mylist[1])

Slovníky v Pythonu (střední)
18 zadání
Typicky zabere: 5 min
Ukázka
pets = {"Alice": "dog", "Bob": "cat", "Cyril": "parrot"}
pets["David"] = "spider"
print(len(pets.keys()))
pets = {"Alice": "dog", "Bob": "cat", "Cyril": "parrot"}
print(pets.get("Bob", "pig"))
pets = {"Alice": "dog", "Bob": "cat", "Cyril": "parrot"}
print(len(pets["Cyril"]))

Datové typy: mix (střední)
39 zadání
Typicky zabere: 4 min
Ukázka
print(len([]))
colors = {"red": "#FF0000", "yellow": "#FFFF00", "navy": "#000080"}
colors["red"] = ""
print(len(colors))
mylist = [8, 3, 45]
mylist.insert(0, 7)
print(mylist[0])

Porozumění
Prohlédněte si vypracované řešení příkladů v Pythonu či ukázkové modely. Pro každý příklad dostanete několik kontrolních otázek, které otestují vaše porozumění problému.
Vnořené cykly v Pythonu
Vnořené cykly jsou typický zdroj problémů pro začátečníky v programování. Prozkoumejte několik typických ukázek jejich využití.
Funkce v Pythonu
Tato sada s motivem přípravy jídla vám pomůže prozkoumat záludnosti správného využití funkcí.
Řetězce v Pythonu
Řešené příklady na práci s řetězci v Pythonu.
Seznamy v Pythonu
Řešené příklady na práci se seznamy v Pythonu.
Slovníky v Pythonu
Řešené příklady na práci se slovníky v Pythonu.
Objekty v Pythonu
Řešené příklady na práci s objekty v Pythonu.
Počítání s čísly
Řešené příklady na práci s čísly v Pythonu.

Python želva
Naprogramujte želvu, aby kreslila pěkné obrázky. Želva rozumí pokynům jako je „jdi dopředu“ či „zatoč doprava“. Programy tvoříte pomocí jazyka Python 3. Pro rozcvičení můžete použít verzi želví grafiky v grafickém programování.
Zájemci najdou více informací o želví grafice v knížce od jednoho z autorů projektu Umíme programovat.
Základy
Pro začátek využijeme jen základní příkazy pro posun a zatáčení a nakreslíme pár jednoduchých obrázků.
Opakování
Nyní využijeme opakování (pomocí for cyklu v Pythonu), což nám umožní snadno vykreslit třeba různé geometrické útvary.
Proměnné
Nyní přidáme proměnné, které nám umožní kreslit obrazce různé velikosti či zatáčet o proměnlivý úhel. To se hodí třeba na pěkné spirály.
Vnořené cykly a zajímavé vzory
Želví grafikou jdou kreslit různé zajímavé vzory. Často to jde snadno, jen je potřeba se na obrázek správně podívat.
Funkce
Želvu můžeme učit nové příkazy – na tom si dobře procvičíme funkce v Pythonu a navíc již vykreslíme zajímavé obrázky.
Funkce II
Ladění programů
V této sadě máte již připravený program, ve kterém jsou jen drobné chyby. Stačí je najít a opravit.
Proměnné a podmínky
V této sadě se želva bude rozhodovat podle aktuální hodnoty proměnných.
Záludné
Úlohy, které jdou vesměs řešit krátkým programem, je ale potřeba k nim přistoupit tím správným způsobem.
Správné úhly
Na následující obrázky nepotřebujeme žádné složité programy, musíme ale správně určit úhly. Zkuste správnou velikost úhlů vymyslet, ne jen náhodně tipovat.

Programování v Pythonu
Programování přímo v prohlížeči, s automatickým vyhodnocením správnosti programu. Cvičení používá programovací jazyk Python 3.
V tomto cvičení píšete programy, které pracují s textem a čísly. Pokud chcete obrázky, zkuste cvičení Python želva.
Proměnné a číselné výrazy v Pythonu
Logické výrazy v Pythonu
Podmíněný příkaz (if): základy
Sada příkladů na základní if-else podmínky v Pythonu.
Podmíněný příkaz (if): těžší
Sada mírně pokročilejších příkladů na podmínky. V této sadě se využije i if-elif-else, případně vnořené podmínky.
Cyklus for v Pythonu
Cyklus for s vnořenou podmínkou
V této sadě jsou příklady, které se řeší pomocí cyklu for s vnořenou podmínkou (if).
Cyklus while v Pythonu
Úpravy programů
V této sadě máte k dispozici připravené programy, které je potřeba pochopit a mírně upravit.
Záludné
Tato sada obsahuje mix příkladů na různá témata. Příklady jdou stále řešit docela krátkými programy, ale mohou již potrápit trochu více než příklady v ostatních sadách.
Řetězce v Pythonu
Seznamy v Pythonu
Slovníky v Pythonu
Seznamy a řetězce: vnořené
Příklady v této sadě používají vnořené datové struktury: seznamy řetězců a seznamy seznamů.
Posloupnosti
Počítání s čísly
V této sadě si procvičíme počítání s čísly: od jednoduchých výpisů až po některé klasické algoritmy.
Textové obrázky
V této sadě budeme vykreslovat „obrázky“ pomocí textových znaků (někdy označováno jako „ASCII art“). Tyto příklady slouží především pro procvičení vnořených cyklů.

Programátorská úkolovka
V této úloze je úkolem určit tajný kód pomocí výpočtu. Jak výpočet provedete, záleží jen na vás, jako odpověď zadáváte pouze výsledný kód. Úlohy jsou připraveny tak, aby byly snadno řešitelné v programovacím jazyku Python. Můžete ale klidně použít i jiné programovací jazyky.