Seminář programování v Pythonu na PORGu - lekce 2


Úvod do Pythonu (2)

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í

Proč se někde píše x=1 a někde x==1?

, to první je přiřazení hodnoty, to druhé výraz k vyhodnocení a navrácení True/False

Cyklus s podmínkou: while

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í

break

... opuštění cyklu

continue

... přerušení jednoho cyklu a zahájení nového od začátku

Cykly přes množinu prvků: for

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

příklad na závěr: hledání prvočísel

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")


Zpět na obsah | Poslední úprava: 2011-09-19