While & Vlastní funkce  28. března 2019

Materiály

Nejste účastníkem kurzu
Pro zápis do kurzu se nejprve přihlašte a následně použijte tlačítko v přehledu kurzu.

Domácí projekty

Trocha experimentování. Zkus se zamyslet, jestli jsi „dobře” pochopila otázku.

0.

Co se stane, když tělo nějaké funkce necháš prázdné? Zkus vysvětlit proč. (Tělo funkce je odsazený blok za dvojtečkou)

1.

Co se stane, když necháš prázdné tělo cyklu? Zkus vysvětlit proč.

2.

Procvičení funkcí. Napiš funkci, která vykreslí domeček dané velikosti. (t.j. velikost se zadá argumentem)

domečky

Tento projekt si udělej, pokud máš ráda geometrii :)

3.

Máš-li ráda geometrii*, můžeš zkusit dávat domečkové funkci dva argumenty: šířku a výšku. Je potřeba si vzpomenout na Pythagorovu větu a funkci tangens. Pozor, funkce tan vrací výsletek v radiánech; je potřeba ho převést na stupně (from math import degrees).

domečky

* t.j. jestli nemáš ráda geometrii, tak tenhle projekt přeskoč

Procvičení programování. Často je jednoduché něco napsat, ale dotažení do konce může být časově náročné. Nemáš-li čas, zkus se aspoň zamyslet, jak bys projekt vyřešila.

4.

Změň program Kámen, Nůžky, Papír tak, aby opakoval hru dokud uživatel nezadá konec.

5.

Změň funkci ano_nebo_ne tak, aby se místo ano se dalo použít i a, místo ne i n a aby se nebral ohled na velikost písmen a mezery před/za odpovědí.

Textům jako možná nebo no tak určitě by počítač dál neměl rozumět.

6.

Napiš program, který simuluje tuto hru:

První hráč hází kostkou (t.j. vybírají se náhodná čísla od 1 do 6), dokud nepadne šestka. Potom hází další hráč, dokud nepadne šestka i jemu. Potom hází hráč třetí a nakonec čtvrtý. Vyhrává ten, kdo na hození šestky potřeboval nejvíc hodů. (V případě shody vyhraje ten, kdo házel dřív.)

Program by měl vypisovat všechny hody a nakonec napsat, kdo vyhrál.

Nápověda: průběžně stačí ukládat jen údaj, kdo vede.

Následující sada projektů není jednoduchá, ale uděláš-li ji, pochopíš různá použití cyklu for.

7.

Pomocí cyklu for a funkce range() napiš program, který vypíše:

a
a
a
a
8.

Pomocí cyklu for napiš program, který vypíše:

Řádek 0
Řádek 1
Řádek 2
Řádek 3
Řádek 4
9.

Jak jsi pojmenovala proměnnou, kterou jsi v minulém příkladu použila? Vymysli pro ni název, který nejlépe vystihuje, co proměnná obsahuje.

Je důležité proměnnou pojmenovat výstižně, jinak se v dalších projektech můžeš ztratit. Možné řešení je uvedeno na konci zadání.

10.

Pomocí cyklu for napiš program, který vypíše:

0 na druhou je 0
1 na druhou je 1
2 na druhou je 4
3 na druhou je 9
4 na druhou je 16

Jak pojmenuješ proměnnou cyklu?

11.

Pomocí cyklů for a parametru end pro print napiš program, který postupně z jednotlivých 'X' vypíše:

X X X X X
X X X X X
X X X X X
X X X X X
X X X X X

„Z jednotlivých 'X'“ znamená, že nepoužiješ např. print('X X X X X').

Jak pojmenuješ proměnnou cyklu? A tu druhou?

12.

Napiš program, který vypíše „tabulku“ s násobilkou. (K řešení tohoto povinného projektu se můžeš dopracovat postupně přes ty nepovinné)

0 0 0 0 0
0 1 2 3 4
0 2 4 6 8
0 3 6 9 12
0 4 8 12 16
13.

Napiš program, který postupně z jednotlivých 'X' vypíše:

X
X X
X X X
X X X X
14.

Pomocí cyklu for a příkazu if napiš program, který vypíše následující řádky. Funkci print volej pouze uvnitř v cyklu:

první řádek
není první
není první
není první
15.

Pomocí cyklů for a příkazu if napiš program, který z jednotlivých 'X' a mezer vypíše:

X X X X X X
X         X
X         X
X         X
X         X
X X X X X X
16.

Programy s cyklem for uprav tak, aby počet řádků (či velikost čtverce/trojúhelníku/tabulky) mohl zadat uživatel.

Následující sada projektů může vyžadovat delší zamyšlení. A to zamyšlení je důležitější než samotná odpověď.

17.

Co dělá tenhle kód?

for c in 'Ahoj světe!':
    print(c)
18.

Vymyslíš lepší jméno pro proměnnou c z minulé úlohy?

19.

Co dělá tenhle kód?

for c in 38:
    print(c)
20.

Už víš, co dělá for s range(), výčtem hodnot a řetězcem. Dokážeš to zobecnit – popsat for jednodušeji, než jak je popsán v materiálech?