První program  15. září 2020

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

0.

Jakou používáš verzi Pythonu? Napiš také, jak jsi na odpověď přišla/přišel.

Následující projekty procvičí orientaci v chybových hláškách. Doporučuji je udělat.

1.

Jak se jmenuje druh chyby, která nastane, když…

  • Dáš uvozovky jen na jednu stranu řetězce? — odpověď: SyntaxError
  • Zkusíš odečíst číslo od řetězce? —
  • Dělíš nulou? —
  • Použiješ proměnnou, která neexistuje? —
  • Stiskneš Ctrl+C, když se program ptá na vstup (pomocí input)? —
  • Odsadíš příkaz bez předchozího if:? —
  • Po if: odsadíš jeden příkaz o čtyři mezery a druhý jen o dvě? —
  • Neuzavřeš závorku? –
  • Zkusíš použít vykřičník (!) jako operátor? —
  • Napíšeš v příkazu print(1, 2, 3) čárku navíc? —
2.

Podívej se na odpovědi na předchozí otázku, ale Python zkus použít jen na ověření.

Jaká chyba nastane, když zkusíš použít proměnnou předtím, než do ní něco přiřadíš?

3.

Podívej se na odpovědi na otázku 1, ale Python použij jen na ověření.

Jaká chyba nastane, když zkusíš podělit řetězec řetězcem?

4.

Lomítko (/) je operátor, ale nedá se použít na řetězce. Vykřičník (!) v Pythonu není operátor. Jak se liší „jejich“ chyby?

Tenhle projekt by měl přivést k tomu, jak zjišťovat, co v Pythonu jde a co ne. Druhá část je trochu na zamyšlení.

5.

Ne všechno se dá použít jako jméno proměnné. Fungují pro proměnné následující jména? Pokud ne, proč asi? Vyzkoušej si to v interaktivním režimu Pythonu.

x
tlacitko4
34
3e4
krůta
$i
druha-odmocnina
readme.txt
kratsiStrana
POCET_BODU
_ (podtržítko)
π (pí)
True
_cache
__name__
while

Následující 2 úkoly jsou na procvičení toho, co jsme dělali na srazu.

6.

Zkus se nedívat na programy ze srazu.

Napiš program, který spočítá povrch a objem krychle o straně 2852 cm.

Abys nemusel/a tolik hledat v učebnici (vlastně Wikipedii): povrch S = 6a², objem V = a³

Řešení, pro kontrolu: S = 48803424 cm², V = 23197894208 cm³

7.

Změň program tak, aby stranu/poloměr mohl uživatel zadat.

Tady už se na materiály ze srazu klidně podívej.

Další tři úkoly jsou dobrovolné. Všechno bude vysvětleno později, takže jestli nemáš čas, přeskoč je.

8.

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)

Jak to funguje, to se dozvíme příště; zatím to ber jako kouzelné zaříkadlo.

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

9.

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.
10.

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ála jsi!';
    • jinak, je-li tah počítače 'papír':
      • vypíše 'Prohrála jsi!'.
  • Jinak, je-li tah hráče 'nůžky':
    • je-li tah počítače 'kámen':
      • vypíše 'Prohrála 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ála jsi!'.
  • Jinak, je-li tah hráče 'papír':
    • je-li tah počítače 'kámen':
      • vypíše 'Vyhrála jsi!';
    • jinak, je-li tah počítače 'nůžky':
      • vypíše 'Prohrála 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.

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

11.

Které pythonní operátory dokážeš z hlavy vyjmenovat?

12.

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
13.

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ěň)

Další dva projekty ti umožní kreativně využít, co ses naučil/a.

14.

Na srazu jsme měli 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.

15.

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ěla černého havrana.

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

16.

Pokud jsme nestihli na lekci, projdi si v materiálech sekci „Nebo anebo a”:

naucse.python.cz/lessons/beginners/and-or/

17.

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ášť.

18.

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!