Podmínky a funkce  19. října 2022

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

Následující projekty jsou na procvičení podmínek a porovnávání.

0.

Napiš program, který po zadání správného hesla vypíše nějakou „tajnou informaci“.

Vhodné tajemství je třeba: V pátek jsem viděl/a černého havrana.

1.

Na srazu jsme spolu vytvářeli program, který píše různé nesmysly podle uživatelem zadaného věku.

Zkus napsat program, který píše hlášky podle zadané rychlosti chůze, váhy ulovené ryby, počtu tykadel, teploty vody nebo třeba vzdálenosti od rovníku.

(Pošli ten nejzdařilejší; kdyby ses chtěl/a pochlubit několika verzemi, dej je všechny do jedné odpovědi.)

A nakonec pár úkolů, které tvoří větší projekt. Navazují na sebe. Dělej je postupně.

2.

Ulož si následující program jako pokus.py a spusť ho několikrát za sebou. Co dělá?

from random import randrange
cislo = randrange(3)
print(cislo)

Aby všechno fungovalo správně, nesmíš mít v aktuálním adresáři soubor jménem random.py.

3.

Vytvoř program, který dělá následující:

  • Vybere náhodné číslo ze tří možností (0, 1, nebo 2). (Koukni na předchozí úkol!)
  • Je-li číslo 0:
    • do proměnné tvar uloží slovo 'trojúhelník';
  • jinak, je-li číslo 1:
    • do proměnné tvar uloží slovo 'čtverec';
  • jinak:
    • do proměnné tvar uloží slovo 'kolečko'.
  • Vypíše tvar.
4.

Vytvoř hru Kámen nůžky papír, která funguje následovně:

  • Do proměnné tah_pocitace dá náhodně slovo 'kámen', 'nůžky' nebo 'papír'. (Koukni na předchozí úkol!)
  • Zeptá se uživatele na tah; výsledek uloží do proměnné tah_hrace
  • Je-li tah hráče 'kámen':
    • je-li tah počítače 'kámen':
      • vypíše 'Remíza!';
    • jinak, je-li tah počítače 'nůžky':
      • vypíše 'Vyhrál jsi!';
    • jinak, je-li tah počítače 'papír':
      • vypíše 'Prohrál jsi!'.
  • Jinak, je-li tah hráče 'nůžky':
    • je-li tah počítače 'kámen':
      • vypíše 'Prohrál jsi!';
    • jinak, je-li tah počítače 'nůžky':
      • vypíše 'Remíza!';
    • jinak, je-li tah počítače 'papír':
      • vypíše 'Vyhrál jsi!'.
  • Jinak, je-li tah hráče 'papír':
    • je-li tah počítače 'kámen':
      • vypíše 'Vyhrál jsi!';
    • jinak, je-li tah počítače 'nůžky':
      • vypíše 'Prohrál jsi!';
    • jinak, je-li tah počítače 'papír':
      • vypíše 'Remíza!'.
  • Jinak,
    • Omluví se (vypíše hlášku), že zná jen tři slova: kámen, nůžky a papír.

Je to celkem dlouhý program, ale můžeš ho psát postupně: každý jednotlivý řádek "přelož" do Pythonu. Budeš potřebovat if, elif, a else; porovnávání (==) a přiřazení (=); pro výpis print a pro vstup input.

Tyto projekty kombinují opakování a nové informace. Doporučuji si je projít.

5.

Zkusil/a jsi porovnávat řetězce? Zkus si tuto tabulku doplnit na papíře a pak ověř odpovědi pomocí Pythonu Pokud to jde, použij pro porovnání < nebo >.

a b
2 > 1
1 < 2
'abc' == 'abc'
'aaa' 'abc'
'abc' 'Abc'
'abC' 'abc'
'abc' 'abcde'
'abc' 'ábč'
'abc' 10
6.

Jaká je hodnota proměnné po provedení příkazů:

  • promenna = 1 < 2 ?
  • promenna = 2 < 2 ?
  • promenna = 1 < 2 < 3 ?
  • promenna = 1 < 3 < 2 ?
  • promenna = 1 < 3 < 3 ?
  • promenna = 'abc' < 'ABC' < 'def' < 'zajíc' ?

Tam, kde je hodnota proměnné False, dají se některé z porovnávaných hodnot mezi sebou vyměnit, aby byla True? (samotný operátor < neměň)

Poslední projekty jsou pokročilejší. Jestli nemáš čas, radši udělej pořádně ty ostatní.

7.

Doplň tuhle tabulku:

a b a and b a or b not a
True True
False True
True False
False False  

Tohle je takzvaná pravdivostní tabulka: Obsahuje jeden řádek pro každou kombinaci booleovských hodnot, které a a b můžou mít. Když se stane, že se v složitějších and a or ztratíš, doporučuji napsat si podobnou tabulku a na každý řádek se podívat zvlášť.

8.

Zkus přepsat Kámen, Nůžky, Papír pomocí and a or.

Dokážeš docílit toho, aby se každý z řetězců 'Remíza.', 'Počítač vyhrál.' a 'Vyhrála jsi!' objevil v programu jen jednou, aniž bys tyhle řetězce musela přiřazovat do proměnných?

Pokud ano, gratuluji!

Následující projekty jsou na procvičení funkcí, které jsme si ukazovali na srazu.

9.

Napiš program, který se zeptá uživatele na text (může to být slovo nebo i věta) a jako výsledek vypíše délku (počet znaků) zadaného textu. Udělej program uživatelsky přívětivý (tzv. user friendly) = uživateli se na terminálu zobrazí otázka a pak i hezká odpověď.

10.

Napiš program, který se zeptá uživatele na dvě čísla a jako výsledek tato dvě čísla porovná.

Příklad použití programu:

První číslo: 10
Druhé číslo: 5
Číslo 10 je větší než číslo 5
11.

Napiš program, který postupně načte od uživatele dvě čísla a jednoznakový řetězec - buď '+', '-', '*' nebo '/'. Program provede na číslech příslušnou operaci.

Příklad použití programu:

První číslo: 123
Druhé číslo: 456
Operace: +
123 + 456 = 579
12.

Napiš program, který bude simulovat hod dvěmi kostkami a vypíše hody na obou kostkách a celkové body.

Příklad výstupu programu:

První kostka: 2
Druhá kostka: 4
Celkový součet: 6