Řetězce  9. března 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.

Napiš 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í možné určit přesně – stačí zvládnout ta nejčastější česká příjmení.)

1.

Najdi na internetu text své oblíbené písně, zkopíruj si ho do řetězce a zjisti, kolikrát je v něm použito písmeno K.

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

2.

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

a
a
a
a
3.

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

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

Jak jsi pojmenovala proměnnou, kterou jsi v minulém příkladu použila? Vymysli 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 projektech můžeš ztratit. Možné řešení je uvedeno na konci zadání.

5.

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

6.

Pomocí cyklů for a parametru end pro print napiš 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žiješ tedy např. print('X X X X X') ani print('X ' * 5).

Jak pojmenuješ proměnnou cyklu? A tu druhou?

7.

Napiš 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
8.

Napiš 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.

9.

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

první řádek
není první
není první
není první
10.

Pomocí cyklů for a příkazu if napiš 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.

11.

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

12.

Co dělá tenhle kód?

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

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

14.

Co dělá tenhle kód?

for c in 38:
    print(c)
15.

Najdi na internetu text své oblíbené písně, zkopíruj si ho do řetězce a zjisti, kolik je v něm písmen. Nepočítej 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.
16.

Vytvoř 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žívej malá písmena a nepoužívej slova, ve kterých se stejné písmeno opakuje dvakrát (třeba čokoláda).

    Zkus 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* ze srazu.)
    • 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 srazu:

# 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

(upřesnění přidáno 2020-03-16)