« Na přehled témat
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.
Vysvětlení mi pomohlo Vysvětlení mi nepomohlo

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 = 3
y = 2
print(x*y)
Můžeme proměnnou pojmenovat cooking_time
?Co vypíše program?x = 7
y = 6
print(x)

Proměnné a číselné výrazy v Pythonu (střední)
61 zadání
Typicky zabere: 8 min
Ukázka
Co vypíše program?x = 5
y = 2
print(x // y)
Jakou hodnotu bude mít na konci proměnná x?x = 2
x += 1
x *= 2
Co vypíše program?a = 1
b = 2
a = 3
print(a+b)

Logické výrazy v Pythonu (lehké)
71 zadání
Typicky zabere: 7 min
Ukázka
Doplňte, aby platilo:"celer" ___ "mrkev"
Jak v Pythonu zapisujeme logickou spojku 'nebo' (disjunkce)?Co vypíše program?a = True and True
print(a)

Logické výrazy v Pythonu (střední)
94 zadání
Typicky zabere: 10 min
Ukázka
Existují x, y, pro které podmínka platí?(x < y) and (x > y)
Pokud je a
pravdivostní proměnná, je výraz a != True
ekvivalentní výrazu not a
?Jsou tyto výrazy ekvivalentní?not (a and b)
not a or not b

Logické výrazy v Pythonu (těžké)
83 zadání
Typicky zabere: 14 min
Ukázka
Vyhodnoťte:(3 > 3) == (5 < 5)
Jak lze zjednodušit následující podmínku?(a and not b) or (not a and b)
Jak zapsat „výlučné nebo“, tj. podmínku, že platí buď a
, nebo platí b
, ale neplatí současně?
Proměnné a výrazy: mix (lehké)
128 zadání
Typicky zabere: 5 min
Ukázka
True and False
Existuje x, pro které podmínka platí?x <= 5 and x >= 5
Doplňte, aby platilo:"celer" ___ "mrkev"

Proměnné a výrazy: mix (střední)
155 zadání
Typicky zabere: 7 min
Ukázka
Existují x, y, pro které podmínka platí?(x < y) and (x > y)
Jsou tyto výrazy ekvivalentní?not (x >= 2 and y >= 3)
x < 2 or y < 3
Existuje x, pro které podmínka platí?(x <= 0) and (x > 0)

Podmíněný příkaz (if) v Pythonu (lehké)
43 zadání
Typicky zabere: 9 min
Ukázka
Kdy se vykoná větev 'else' v podmíněném příkazu?Kterou z následujících podmínek musíme v programu použít, aby vypsal NE?x = 3
if ????:
print("ANO")
else:
print("NE")
Je podmíněný příkaz zapsaný správně?if x > 0 and if y > 0:
print("mrkev")
else:
print("celer")

Podmíněný příkaz (if) v Pythonu (střední)
46 zadání
Typicky zabere: 16 min
Ukázka
Jak vypsat, zda je pozicex, y
uvnitř kruhu se středem v počátku a poloměru r
?Je podmíněný příkaz zapsaný správně?if y > 0:
if x > 0:
print("kvadrant I")
elif x < 0:
print("kvadrant II")
elif y < 0:
if x < 0:
print("kvadrant III")
elif x > 0:
print("kvadrant IV")
Je podmíněný příkaz zapsaný správně?if x < 0:
if n % 3 == 0:
print("mrkev")
elif n % 3 == 1:
print("celer")
else:
if n % 2 == 1:
print("okurka")
else:
print("paprika")

Cyklus for v Pythonu (lehké)
45 zadání
Typicky zabere: 9 min
Ukázka
Jaký příkaz musíme doplnit v následujícím programu místo XXX, aby program vypsal číslo 6?a = 0
for i in XXX:
a = a + i
print(a)
Co vypíše program?for i in range(2):
print("mrkev")
print("celer")
Jak vypsat prvky ze seznamu values
, které splňují test
?
Cyklus for v Pythonu (střední)
46 zadání
Typicky zabere: 13 min
Ukázka
Kolik čísel dávárange(a, a + 20)
?Co vypíše program?x = 0
for i in range(4):
print(x)
x = x + i
Která čísla dává range(10, 6)
?
Cyklus while v Pythonu (lehké)
44 zadání
Typicky zabere: 10 min
Ukázka
Zjednodušte program:x = 5
while x > 0:
print(x)
x -= 1
Jaký příkaz musíme doplnit na místo XXX, aby program vypsal čísla od 1 do 10?a = 1
b = 10
while a <= b:
print(a)
XXX
Zjednodušte program:x = 100
while x > 0 or x >= 0:
print(x)
x -= 1

Cyklus while v Pythonu (střední)
48 zadání
Typicky zabere: 19 min
Ukázka
Zjednodušte program:x = 0
while x < 400:
x = 3 * x + 10
if x == 400:
print(3 * x + 10)
else:
print(x)
Co vypíše program?i = 1
while i < 5:
i = i + 1
print(i)
Vypíše se víc celeru nebo mrkve?x = 10
while x ** 2 < 100:
print("celer")
print("mrkev")

Funkce v Pythonu (lehké)
51 zadání
Typicky zabere: 9 min
Ukázka
Musí každá funkce obsahovatreturn
?Lze jednu funkci zavolat víckrát?Kolik je f(2, 3, 1)
?def f(x, v, a):
return v

Funkce v Pythonu (střední)
51 zadání
Typicky zabere: 12 min
Ukázka
Kolik jef(1) + f(2)
?def f(x):
return 1
return 2
Zjednodušte program:print("mrkev")
print("mrkev")
print("mrkev")
print("celer")
print("celer")
print("celer")
print("celer")
Vypíše se celer?def test(x):
if x > 0:
return "mrkev"
return "celer"
print(test(-5))

Funkce v Pythonu (těžké)
56 zadání
Typicky zabere: 16 min
Ukázka
Může cook(x) vypsat celer?def cook(x):
x = magic(x)
print(x)
def magic(x):
if x == "celer":
x = "mrkev"
elif x == "mrkev":
x = "celer"
Vypíše se celer?def talk(x):
speak()
def speak():
print(x)
talk("celer")
Vypíše se celer?def print_celer():
if False:
"mrkev"
else:
"celer"
print_celer()

Řízení výpočtu: mix (lehké)
183 zadání
Typicky zabere: 8 min
Ukázka
Který program vypíše nejvyšší z časů v seznamutimes
?Existuje celočíselné n
, pro které se program zacyklí?x = 0
while x != n:
x += 1
Kolikrát se vypíše celer?def speak():
print("celer")
def talk():
print("mrkev")
speak()
talk()
speak()

Řízení výpočtu: mix (střední)
191 zadání
Typicky zabere: 11 min
Ukázka
Kolik slov se vypíše v závislosti na hodnotěn
?if n < 3:
print("mrkev")
elif n < 5:
print("celer")
elif n < 10:
print("okurka")
Vypíše se celer?x = 1
while x < 100:
print("mrkev")
x *= 2
while x <= 100:
print("celer")
x *= 2
Ovlivní hodnota n
, kolik slov se vypíše?if n % 2 == 1:
print("mrkev")
else:
print("celer")
print("jablko")

Přehled datových typů (lehké)
73 zadání
Typicky zabere: 5 min
Ukázka
Určete typ:[[1, 2], [3, 4]][0]
Určete typ:1.3
Seznamy, n-tice i řetězce indexujeme v Pythonu:
Přehled datových typů (střední)
80 zadání
Typicky zabere: 11 min
Ukázka
Určete typ:int('42')
Určete hodnotu výrazu:bool([False, False])
Jsou pravdivostní hodnoty (bool) měnitelné (mutable)?
Řetězce v Pythonu (lehké)
49 zadání
Typicky zabere: 5 min
Ukázka
Pravda nebo nepravda?len("trochu") == len("hodne")
Který příkaz změní hodnotu x na 'CELER'?x = 'Celer'
Kolikrát se vypíše celer?for x in range(len('01101')):
if x == '1':
print('celer')

Řetězce v Pythonu (střední)
53 zadání
Typicky zabere: 7 min
Ukázka
Pravda nebo nepravda?len("99") == len("10")
Vytvořte smajlíka :)s = '):-O'
Pravda nebo nepravda?'celer' >= 'celer'

Řetězce v Pythonu (těžké)
54 zadání
Typicky zabere: 13 min
Ukázka
Určete hodnotu výrazu:len('2' * 2 + 2 * '2')
Vytvořte číslo 42.s = '24000'
Vytvořte číslo 42.a = '4'
b = '2'

Seznamy v Pythonu (lehké)
67 zadání
Typicky zabere: 6 min
Ukázka
Kde je celer?food = ['mrkev', 'paprika']
food.append('celer')
Kolik celeru se vypíše?a = [1, 0, 1, 0, 1]
for x in a:
if x == 1:
print('celer')
Co vypíše program?mylist = [5, 1, 7, 10]
for i in range(len(mylist)):
print(i, mylist[i])

Seznamy v Pythonu (střední)
85 zadání
Typicky zabere: 8 min
Ukázka
Jak v seznamua
prohodit prvky na indexech i
a j
?Dojde k chybě?a = [0, 0, 0]
a[len(a)] = 1
Kterým z následujících příkazů zjistíme velikost seznamu mylist?
Seznamy v Pythonu (těžké)
81 zadání
Typicky zabere: 14 min
Ukázka
Najděte číslo 81:a = sorted([71, 82, 81, 82, 84])
Dojde k chybě?a = [1, 4, 1, 5]
for i in range(len(a) // 2):
print(a[i], a[2*i + 1])
Pravda nebo nepravda?[1, 2] == [2, 1]

Slovníky v Pythonu (lehké)
21 zadání
Typicky zabere: 6 min
Ukázka
Co vypíše program?person = {"name": "Peter",
"age": 23}
print(person["name"])
print(person["age"])
Co vypíše program?pets = {"Alice": "dog",
"Bob": "cat",
"Cyril": "parrot"}
pets["Bob"] = "dog"
print(pets["Alice"], pets["Bob"])
Co vypíše program?pets = {"Alice": "dog",
"Bob": "cat",
"Cyril": "parrot"}
pets["Bob"] = "dog"
for x in pets.values():
print(x)

Objekty v Pythonu (střední)
13 zadání
Typicky zabere: 7 min
Ukázka
Co vypíše program?class X:
def __init__(self, a):
self.a = a
def f(self, a):
print(a)
x = X(3)
x.f(7)
Co vypíše program?class X:
def __init__(self, a):
self.a = a
def f(self, a):
print(a)
x = X(5)
x.f(2)
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()

Datové typy: mix (lehké)
137 zadání
Typicky zabere: 5 min
Ukázka
Co vypíše program?print(len([]))
Co vypíše program?text = "koza"
for i in range(len(text)):
print(i, text[i])
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 + (y * z)x = y**2x = 5
Logické výrazy v Pythonu (střední)
4 zadání
Typicky zabere: 7 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
intcelé čísloLogické výrazy v Pythonu
x == 5 |
| x != 5 |
| x < 5 |
|
x >= 5 |
| True |
| x <= 5 |
|

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: 4 min
Ukázka
a = 5
a = 6
print(a)
x = 3
y = 2
print(x, y)
a = 5
a += 6
print(a)

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

Řetězce v Pythonu (lehké)
21 zadání
Typicky zabere: 3 min
Ukázka
text = "petr"
text = text.upper()
print(text)
text = "Ostrava"
text = text.lower()
print(text)
text = "slon"
print(text[0])

Seznamy v Pythonu (střední)
21 zadání
Typicky zabere: 4 min
Ukázka
mylist = [[8, 3], [4, 5]]
print(mylist[0][1])
mylist = [1, 2, 4]
print(mylist[1])
mylist = [8, 3, 45]
mylist.insert(0, 7)
print(mylist[0])

Slovníky v Pythonu (střední)
18 zadání
Typicky zabere: 5 min
Ukázka
mydict = {3: 5, 0: 3, 1: 4}
print(mydict[1])
colors = {"red": "#FF0000", "yellow": "#FFFF00", "navy": "#000080"}
print(len(colors.values()))
pets = {"Alice": "dog", "Bob": "cat", "Cyril": "parrot"}
pets["David"] = "spider"
print(len(pets.keys()))

Datové typy: mix (střední)
39 zadání
Typicky zabere: 4 min
Ukázka
mylist = [2, 3, 5]
print(mylist[0] + mylist[1])
morse = {'A': '.-', 'B': '-...', 'C': '-.-.',
'D': '-..', 'E': '.', 'F': '..-.'}
print('-..' in morse.values())
fruits = {"apple": 5, "banana": 10, "orange": 2}
print(fruits.get("pear", 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.
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.
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.
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.

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) v Pythonu
Cyklus for 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
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.