Mocniny čísel

In [1]:
cisla = [(1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6,36), (7, 49), (8, 64), (9, 81), (10, 100)]
mocniny = dict(cisla)
print(mocniny)
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

Skautská hra

In [ ]:
import random

while True:
    odpoved = input('Na kolik odpovědí chceš hrát? ')
    try:
        odpoved = int(odpoved)
        break
    except ValueError:
        print('Musíš napsat celé číslo!')

kdo = []
s_kym = []
co_delali = []
kde = []
kdy = []
proc = []

vsechno = [kdo,s_kym,co_delali,kde,kdy,proc]

for i in range (odpoved):
    kdo1 = input ('Kdo? ')
    s_kym1 = input ('S kým? ')
    co_delali1 = input ('Co dělali? ')
    kde1 = input ('Kde? ')
    kdy1 = input ('Kdy? ')
    proc1 = input ('Proč? ')
    print('')

    kdo.append(kdo1)
    s_kym.append(s_kym1)
    co_delali.append(co_delali1)
    kde.append(kde1)
    kdy.append(kdy1)
    proc.append(proc1)

a=random.choice(kdo)
b=random.choice(s_kym)
c=random.choice(co_delali)
d=random.choice(kde)
e=random.choice(kdy)
f=random.choice(proc)

print(a, b, c, d, e, f)

Řešení bez slovníků, ale hlavně takové, kde by nebylo úplně snadné přidat další otázky.

In [ ]:
import random

kdo_seznam = []
s_kym_seznam = []
kde_seznam = []
co_delali_seznam = []
proc_seznam = []
for pocet in range(3):
    kdo = input('Kdo? ')
    kdo_seznam.append(kdo)
    s_kym = input('S kým? ')
    s_kym_seznam.append(s_kym)
    kde = input('Kde? ')
    kde_seznam.append(kde)
    co_delali = input('Co dělali? ')
    co_delali_seznam.append(co_delali)
    proc = input('Proč? ')
    proc_seznam.append(proc)
print(random.choice(kdo_seznam), 's', random.choice(s_kym_seznam),'v', random.choice(kde_seznam), random.choice(co_delali_seznam), random.choice(proc_seznam))

Řešení, kde přidání, změna či odebrání jakékoli otázky znamená jen změnu na jednom míste v seznamu otázek.

In [ ]:
from random import choice

otazky = ['Kdo', 'S kym', 'Co delali', 'Kde']

odpovedi = {}
for otazka in otazky:
    odpovedi[otazka] = []

# Alternativní cesta
# odpovedi = {otazka: [] for otazka in otazky}
    
for otazka in otazky:
    while True:
        odpoved = input('Zadej odpoved na otazku {}? '.format(otazka))
        if not odpoved:
            break
        else:
            odpovedi[otazka].append(odpoved)

veta = ''

for otazka in otazky:
    veta = veta + choice(odpovedi[otazka]) + ' '

print(veta)

Obecné rady a postřehy

  • Pokud nevracíme n-tici, nepoužíváme za return závorky
    • return (n) je matoucí, správně by mělo být napáno jen return n
    • return (x, y) je správně, ale pro jednoduchost můžeme závorky klině vynechat a napsat jen return x, y
  • Pochvala za validaci inputů
    • Ještě větší pochvala za validaci s pomocí výjimek
  • Pochvala za dokumentační řetězce
    • Ještě větší pochvala za dokumentační řetězce ve třech uvozovkách
      • A ještě větší pochvala těm, kdož jsou konzistentní a dávají dokumentační řetězce úplně všude

  • Pokud je váš projekt složen z více souborů, udělejte z něj archiv (.zip), aby si soubory zachovaly jméno
  • Dělejte samostatné soubory pro samostatné úlohy
  • Proměnné s nicneříkajícími názvy se vám vymstí