Řetězce  15. března 2021

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

Procvičení řetězců. Mějte při ruce taháky!

0.

Napište program, který se zeptá na dva řetězce a zjistí, jestli je jeden obsažen ve druhém. Nebere přitom ohled na velikost písmen.

(Stejné zadání bylo i na videu.)

1.

Napište program, který se zeptá na příjmení uživatelky/uživatele a zkusí podle něj uhodnout její/jeho pohlaví. To pak vypíše.

(Pohlaví není podle jména možné určit přesně – stačí zvládnout ta nejčastější česká příjmení.)

2.

Najděte na internetu text své oblíbené písně, zkopírujte si ho do řetězce a zjistěte, kolikrát je v něm použito písmeno K. (Velké nebo malé.)

Text by mělo jít jednoduše vyměnit za jiný.

Jako u všech úkolů odevzdejte prosím jen jedno řešení – ideálně to nejzajímavější nebo jinak "nejlepší", ale klidně jakékoli co splňuje zadání. (V případě že se nedohodnete můžete vložit víc řešení najednou. Doporučuju se pak ale o tom, proč jste se nedohodli, poradit v diskusi.)

Následující sada úkolů procvičuje různá použití cyklu for. Úkoly na sebe navazují, řešte je postupně.

3.

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

a
a
a
a
4.

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

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

Jak nejlépe pojmenovat proměnnou pro minulý příklad? Vymyslete 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 úkolech můžete ztratit.

6.

Pomocí cyklu for napište 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 pojmenujete proměnnou cyklu?

7.

Pomocí cyklů for a parametru end pro print napište 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 každý print vypíše maximálně jedno X. Nepoužijete tedy např. print('X X X X X') ani print('X ' * 5).

Jak pojmenujete proměnnou cyklu? A tu druhou?

8.

Napište program, který vypíše „tabulku“ s násobilkou.

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

K oddělení sloupců použijte znak tabulátoru.

Tabulka je podobná předchozí, jen má v každé "buňce" hodnotu "číslo řádku × číslo sloupce".

9.

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

X
X X
X X X
X X X X

„Z jednotlivých 'X'“ opět znamená, že každý print vypíše maximálně jedno X.

10.

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

první řádek
není první
není první
není první
11.

Pomocí cyklů for a příkazu if napište program, který 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

„Z jednotlivých 'X'“ opět znamená, že každý print vypíše maximálně jedno X.

12.

Předchozí programy z této sekce upravte tak, aby počet řádků (či velikost čtverce/trojúhelníku/tabulky) mohl zadat uživatel.

Následující sada úkolů vám ukáže zajímavou vlastnost řetězců. Zpomalte a zamyslete se.

13.

Co dělá tenhle kód?

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

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

15.

Co dělá tenhle kód?

for c in 38:
    print(c)
16.

Najděte na internetu text své oblíbené písně, zkopírujte si ho do řetězce a zjistěte, kolik je v něm písmen. Nepočítejte mezery, znaky nového řádku a znaky !"#$%&\'()*+,-./:;<=>?@[\]^_{|}~.

Text písně by mělo jít jednoduše vyměnit za jiný.

Postup:

  • Na začátku nastav počet nalezených písmen na 0.
  • Pro každý znak textu:
    • Když znak není obsažen v ! " # $ % & …:
      • Zvyš počet nalezených písmen o 1.
  • Vypiš počet nalezených písmen.

Máme tu i tradiční hru!

17.

Vytvořte hru Šibenice podle následujícího popisu.

  • Počítač náhodně zvolí slovo (zatím třeba ze tří možností). Pro jednoduchost používejte malá písmena a nepoužívejte slova, ve kterých se stejné písmeno opakuje dvakrát (třeba čokoláda).

    Zkuste třeba slova: trávník, stromek, stavení.

  • Výchozí stav je řetězec s tolika podtržítky, kolik je ve vybraném slově písmen.

  • Výchozí počet neúspěšných pokusů je nula.

  • Stále dokola:

    • Zeptej se hráče na písmeno.
    • Pokud je to písmeno ve vybraném slově:
      • Zaměň ve stavu příslušné podtržítko za ono písmeno. (Bude se hodit řetězcová metoda index a podprogram zamen* z videa.)
    • Pokud dané písmeno není ve vybraném slově:
      • započítej neúspěšný pokus.
    • Vypiš stav (slovo s případnými podtržítky).
    • Pokud už ve stavu nejsou podtržítka:
      • Pogratuluj hráči.
      • Ukonči hru.
    • Vypiš počet neúspěšných pokusů.
    • Pokud je počet neúspěšných pokusů 9 (nebo víc):
      • Dej hráči najevo, že prohrál.
      • Ukonči hru.

* Podprogram zamen jsme si ukázali na videu:

# Ve slově `slovo` zaměnit znak na pozici `pozice` za `novy_znak`;
# výsledek bude v proměnné `nove_slovo`.
zacatek = slovo[:pozice]
konec = slovo[pozice + 1:]
nove_slovo = zacatek + novy_znak + konec