Co se stane, když tělo nějaké funkce necháš prázdné? Můžeš se podívat do materiálů do kapitoly "Definice funkcí" na to, co je to tělo funkce a pak vytvořit program, který bude obsahovat jen definici funkce podle zadání a nic jiného.
Co se stane, když necháš prázdné tělo cyklu? Také zde si vytvoř program, který bude obsahovat pouze první řádek cyklu bez těla a zkus program spustit. Co se stane? Můžeš si vyzkoušet, jestli bude rozdíl mezi FOR cyklem a WHILE cyklem.
Napiš funkci, která vykreslí domeček dané velikosti. (t.j. velikost se zadá argumentem)
Máš-li rád/a 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ýsledek v radiánech;
je potřeba ho převést na stupně (from math import degrees
).
* t.j. jestli nemáš rád/a geometrii, tak tenhle projekt přeskoč
Změň program Kámen, Nůžky, Papír tak, aby opakoval hru dokud
uživatel nezadá konec
.
Změň funkci ano_nebo_ne
(funkci najdeš v kapitole "Definice funkci" v části "Vracení ukončuje funkci") tak,
aby se místo ano
se dalo použít i písmeno 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.
Napiš program, který se zeptá na příjmení uživatelky/uživatele a zkusí podle něj uhodnout její/jeho pohlaví.
Najdi na internetu text své oblíbené písně/básně, zkopíruj si ho do řetězce a zjisti, kolikrát je v něm použito písmeno K.
Zkus použít nové znalosti o funkcích a vytvoř znovupoužitelný prográmek, který bude fungovat i pro jiný text písně/básně. Můžeš/nemusíš se inspirovat následujícím postupem.
Postup:
text_pisne
) a ulož si do ní text písně/básně jako řetězec.pismeno
) a ulož si do ní písmeno K jako řetězec.pismeno
(vstupní argument funkce), zvyš počet nalezených písmen o 1.vysledek
.vysledek
.Nezapomeň zohledit skutečnost, že pro Python jsou "K" a "k" dva různé znaky.
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.
Napiš funkci vyhodnot
, která dostane řetězec
s herním polem 1-D piškvorek
a vrátí jednoznakový řetězec podle stavu hry:
"x"
– Vyhrál hráč s křížky (pole obsahuje "xxx"
)"o"
– Vyhrál hráč s kolečky (pole obsahuje "ooo"
)"!"
– Remíza (pole neobsahuje "-"
, a nikdo nevyhrál)"-"
– Ani jedna ze situací výše (t.j. hra ještě neskončila)Zkus si zadání výše rozepsat na jednotlivé kroky a ty postupně převeď na kód. Jestli chceš, můžeš si funkci otestovat s různými řetězci a sledovat, zda dělá a vrací to, co očekáváš.
Napiš funkci tah
, která dostane řetězec s herním polem,
číslo políčka (0-19), a symbol (x
nebo o
)
a vrátí herní pole (t.j. řetězec) s daným symbolem umístěným na danou pozici.
Hlavička funkce by tedy měla vypadat nějak takhle:
def tah(pole, cislo_policka, symbol):
"""Vrátí herní pole s daným symbolem umístěným na danou pozici"""
...
Můžeš využít nějakou funkci, kterou jsme napsaly už na sraze?
Napiš funkci tah_hrace
, která dostane řetězec s herním polem,
zeptá se hráče, na kterou pozici chce hrát, a vrátí herní pole
se zaznamenaným tahem hráče.
Funkce by měla odmítnout záporná nebo příliš velká čísla
a tahy na obsazená políčka.
Pokud uživatel zadá špatný vstup, funkce mu vynadá a zeptá se znova.
Při psaní funkce postupuj po malých krocích, nesnaž se napsat celou funkci najednou.
Nejdříve můžeš napsat funkci, která splní zadání v první větě tohoto úkolu. Když ti bude program fungovat, dále funkci rozšiřuj podle zadání.
Napiš funkci tah_pocitace
, která dostane řetězec s herním polem,
vybere pozici, na kterou hrát, a vrátí herní pole
se zaznamenaným tahem počítače.
Použij jednoduchou náhodnou „strategii”:
Hlavička funkce by tedy měla vypadat nějak takhle:
def tah_pocitace(pole):
"""Vrátí herní pole se zaznamenaným tahem počítače"""
...
Napiš funkci piskvorky1d
, která vytvoří řetězec s herním polem
a střídavě volá funkce tah_hrace
a tah_pocitace
,
dokud někdo nevyhraje nebo nedojde k remíze.
Nezapomeň kontrolovat stav hry po každém tahu.
Zvládneš pro počítač naprogramovat lepší strategii? Třeba aby se snažil hrát vedle svých existujících symbolů nebo aby bránil protihráčovi?
Stačí jen docela malé vylepšení!