List comprehensions

Jedná se o zápis s Pythonu s jehož pomocí se dají jednoduše vytvářet seznamy.

In [1]:
[x for x in range(10)]
Out[1]:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [2]:
[x**2 for x in range(10)]
Out[2]:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
In [3]:
[x**2 for x in range(10) if x % 2 == 0]
Out[3]:
[0, 4, 16, 36, 64]
In [4]:
[(x, x**2) for x in range(10)]
Out[4]:
[(0, 0),
 (1, 1),
 (2, 4),
 (3, 9),
 (4, 16),
 (5, 25),
 (6, 36),
 (7, 49),
 (8, 64),
 (9, 81)]
In [5]:
[[y for y in range(3)] for x in range(10)]
Out[5]:
[[0, 1, 2],
 [0, 1, 2],
 [0, 1, 2],
 [0, 1, 2],
 [0, 1, 2],
 [0, 1, 2],
 [0, 1, 2],
 [0, 1, 2],
 [0, 1, 2],
 [0, 1, 2]]

Tabulka s hracím polem

Řešení 1

In [6]:
def vytvor_tabulku():
    zap_tabulka = []

    for rada_x in '.', '.', '.', '.', '.', '.', '.', '.', '.', '.':
        radek = []
        for rada_y in '.', '.', '.', '.', '.', '.', '.', '.', '.', '.':
            radek.append(rada_y)
        zap_tabulka.append(radek)
    return zap_tabulka

Řešení 2

In [7]:
def vytvor_prazdne_herni_pole(r,s):
    seznam_radku = []
    for a in range(r):
        radek = ["."]
        for b in range(s-1):
            radek.append(".")
        seznam_radku.append(radek)
    return seznam_radku

Správné řešení

In [8]:
def vytvor_tabulku(velikost):
    seznam_radku = []
    for a in range(velikost):
        radek = []
        for b in range(velikost):
            radek.append(".")
        seznam_radku.append(radek)
    return seznam_radku

Krátké řešení

In [9]:
def vytvor_tabulku(velikost):
    tabulka = []
    for x in range(velikost):
        radek = ['.' for x in range(velikost)]
        tabulka.append(radek)
    return tabulka

Kratší řešení

In [10]:
def vytvor_tabulku(velikost):
    radek = list('.' * velikost)
    return [radek for x in range(velikost)]

Nejkratší řešení (je nejlepší?)

In [11]:
def vytvor_tabulku(velikost):
    return [list('.' * velikost) for x in range(velikost)]

Rubber duck problem solving

Gumová kačenka

Jde o techniku řešení problému, při které se svůj problém snažíte vysvětlit někomu (nebo v případě gumové kachny něčemu), kdo programování nemusí vůbec rozumět. Když řešenou problematiku a vaše současné řešení popisujete nahlas, uvědomíte si, co váš program aktuálně dělá a co by dělat měl, což zpravidla vede k vyřešení problému.

Obecné rady a poznatky

  • Pochvala za římská čísla i práci s básničkami
  • Nepoužívat jednoznakové proměnné. Nevyznáte se v tom už za týden.
  • Komentář (dokumentační řetězec) píšeme dovnitř funkce (hned pod úvodní řádek s názvem), nikoli nad ni
  • Závorky u funkcí patří hned za název funkce - tedy print() místo print ()