Proměnné a porovnávání  27. září 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 procvičí orientaci v chybových hláškách. Doporučujeme je vyzkoušet.

0.

Jak se jmenuje chyba, která nastane, když…

např. 0. Dáš uvozovky jen na jednu stranu řetězce? — SyntaxError

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

Nápověda: Odpovědi nalezneš pomocí Pythonu. např. Dáš uvozovky jen na jednu stranu řetězce?

>>> "ahoj
1.

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íš (tedy pokud zapomeneš výraz pro přiřazení např.: a = 10)?

2.

Opět se podívej na druhy chyb, ale Python použij jen na ověření.

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

3.

Lomítko (/) je operátor, ale nedá se použít na řetězce. Vykřičník (!) v Pythonu není operátor. Vyzkoušej je a podívej se na druhy chyb. 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í.

4.

Ne všechno se dá použít jako jméno proměnné. Fungují pro proměnné následující jména? Do odpovědi nám napiš konkrétně, které lze a nelze použít jako proměnnou (a proč).

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

Nápověda: Všechny si vyzkoušej v Pythonu a zjistíš, jaké se dají použít a jaké ne. Některé tě třeba i překvapí.

První dva projekty jsou na procvičení toho, co jsme dělali na srazu.

5.

Zkus se nedívat na programy ze srazu.

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

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

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

6.

Změň program pro výpočet povrchu a objemu krychle tak, aby stranu/poloměr mohl uživatel zadat.

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

7.

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
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 si vysvětlíme příště; zatím to ber jako kouzelné zaříkadlo.

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

9.

Tento projekt doplňuje program ze srazu. Zkombinuj program z předchozího úkolu (č. 7) s programem kámen-nůžky-papír a nastav tah_pocitace na:

  • 'kámen', pokud je cislo 0,
  • 'nůžky', pokud je cislo 1,
  • jinak na 'papír'.

Kód ze srazu najdeš i zde, ale výrazně ho stačí zjednodušit jen na tah_pocitace.

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

10.

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

11.

Zkusila jsi porovnávat řetězce? Doplň tuhle tabulku; pak ověř odpovědi pomocí Pythonu. Použij pouze "<", ">" a "==":

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

Nápověda: Každé písmeno má svůj kód v ASCII tabulce (porovnávají se tedy hodnoty z ní). Proto lze porovnávat velká a malá písmena, čísla a další symboly.

12.

Lze porovnávat i více řětezců za sebou. Jaká je hodnota proměnné, když

res1 = 1 > 4 > 2  

Pokud je hodnota proměnné False, dá se porovnání mezi sebou upravit tak, aby byla True?

Zkusila jsi porovnávat řetězce u malých a velkých písmen u úkolů výše? Čeho si si všimla? res2 = 'abc' < 'ABC'

Nápověda: Každé písmeno má svůj kód v ASCII tabulce (porovnávají se tedy hodnoty z ní). Proto lze porovnávat velká a malá písmena, čísla a další symboly.

Následuje prostor pro tvoji kreativitu.

13.

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.

14.

A teď trochu kreativity. Napiš program, který po zadání správného hesla vypíše nějakou tajnou informaci.

Vhodné tajemství je třeba: Dnes koukáme na Harryho Pottera.

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

15.

Projdi si v materiálech sekci „Nebo anebo a”:

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

16.

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

17.

Výzva   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ů 'Plichta.', '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! Nasdílej nám tvoje řešení.

Kód ze srazu najdeš i zde.

18.

Výzva   Zkus napsat program, který ti poradí, co si vzít na sebe podle počasí (prší/je slunečno). Použij k tomu zanořené ify.

Program může vypadat následovně. Pokud venku prší, vem si kabát. Pokud prší a fouká k tomu, vem si větrovku a dlouhé kalhoty. Pokud svítí sluníčko, obleč si šaty/kraťasy. Pokud svítí slunce a k tomu fouká, vem si kabátek.

Kreativitě se meze nekladou.