opakování: indexování seznamu
v seznamu můžou být i různé datové typy (řetězec, číslo, objekt) vedle sebe
pozor, proměnná se seznamem ve skutečnosti ukazuje do paměti, kde se seznam nachází
, to první je přiřazení hodnoty, to druhé výraz k vyhodnocení a navrácení True/False
Cykluje, dokud je podmínka True.
x=1 while x<100: x*=2 # Násobení x dvojkou print(x)
Všimněte si použití
... opuštění cyklu
... přerušení jednoho cyklu a zahájení nového od začátku
Lze použít buďto list s prvky for a in [1, 2, 3]:
for a in range(123):
Poznámka pro zvědavé: Když si do interpreteru pythonu zadáte výraz range(5)
, asi budete očekávat, že vám vrátí seznam (konkrétně hodnotu [0, 1, 2, 3, 4]
). Ve skutečnosti navrátí tzv. iterátor (konkrétně jménem range(5)
, z něhož jde postupně "tahat" hodnoty jako ze seznamu. Iterátor je podobný jako funkce, ALE: navrací hodnotu vícekrát. Poté, co vydá hodnotu příkazem yield()
, zůstane stále spuštěný a čeká, až ho zavoláme znovu. Ještě se k iterátorům dostaneme a naučíme se vyrábět vlastní.
zbytek po dělení: a%b; dále celočíselné dělení: a//b
Na závěr hodiny jsem vám dal úlohu, kterou část z vás úspěšně vyřešila. Tady máte vzorové řešení.
Dobrovolný matematický úkol: Kdo ho dovedete zrychlit? (Existuje mnoho způsobů!)
#!/usr/bin/env python max=100 for a in range(1,max): print("testuji", a) delitelne = False for b in range(2,a): if a%b == 0: print(a, "je delitelne", b) delitelne = True if not delitelne: print(a, "je prvocislo")