Programování v Pythonu

Podobné dokumenty
Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Python profesionálně: dynamické parametry, generátory, lambda funkce... with. Dynamické parametry

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Standardní algoritmy vyhledávací.

Konečný automat. Jan Kybic.

Jazyk C# a platforma.net

Programování v Pythonu

PARADIGMATA PROGRAMOVÁNÍ 2 PŘÍSLIBY A LÍNÉ VYHODNOCOVÁNÍ

IB111 Úvod do programování skrze Python Přednáška 7

Objektově orientované programování v jazyce Python

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Programování v jazyce JavaScript

Objektově orientované programování v jazyce Python

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Chyby a výjimky. Chyba. Odkud se chyby berou? Kdo chyby opravuje? Co můžete dělat jako programátor? Dvě hlavní metody práce s chybami.

Psaní jednoduchých programů (2. přednáška) F F U K. Jonathan L. Verner. Department of Logic

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Konstruktory a destruktory

Neměnné objekty. Tomáš Pitner, upravil Marek Šabo

Kámen-nůžky-papír. Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Programování v jazyce JavaScript

Programování v jazyce JavaScript

Spojový seznam. Jan Kybic.

Programování v Pythonu

Úvod do programování - Java. Cvičení č.4

Konstruktory překladačů

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

typová konverze typová inference

Úvod do programovacích jazyků (Java)

Jazyk C# (seminář 5)

Regulární výrazy. Filtry grep, sed a awk.

PARADIGMATA PROGRAMOVÁNÍ 2 KORUTINY, NEDETERMINISMUS

Úvod do programovacích jazyků (Java)

Operační systémy. Cvičení 4: Programování v C pod Unixem

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Implementace LL(1) překladů

Kámen-nůžky-papír. Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Scrapping stránek prakticky: Dívka dne na TN.cz

Algoritmizace a programování

Maturitní otázky z předmětu PROGRAMOVÁNÍ

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

VY_32_INOVACE_08_2_04_PR

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Motivace. Vstup a výstup. Minimální komunikace. Motivace. ÚDPJ - Vstup a výstup. Ing. Lumír Návrat katedra informatiky, A

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Programovani v Maplu Procedura

9. přednáška - třídy, objekty

ČVUT FIT: BI-SKJ: Perl

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

Paradigmata programování II Korutiny a nedeterminismus

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

DUM 20 téma: Test dávky

Funkční objekty v C++.

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Mělká a hluboká kopie

Poslední nenulová číslice faktoriálu

VISUAL BASIC. Práce se soubory

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

DUM 06 téma: Tvorba makra pomocí VBA

2 Datové typy v jazyce C

Třídění a vyhledávání Searching and sorting

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

Algoritmizace a programování

Úvodem... 9 Kapitola 1 Karetních

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

IAJCE Přednáška č. 7. řízení semaforu na křižovatce = přepínání červená/oranžová/zelená

Programujeme v softwaru Statistica

Více o konstruktorech a destruktorech

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

Jazyk C++ I. Šablony 2

Transkript:

ƒeské vysoké u ení technické v Praze FIT Programování v Pythonu Ji í Znamená ek P íprava studijního programu Informatika je podporována projektem nancovaným z Evropského sociálního fondu a rozpo tu hlavního m sta Prahy. Praha & EU: Investujeme do va²í budoucnosti

Python (2011-05-05) : Iterátory 1 of 5 Python Iterátory Úvod Struktury, po kterých se dá iterovat, patří ke zcela základním stavebním kamenům jazyka Python. A iterovat se v Python'u dá opravdu skoro po všem, jak dokumentuje pár následujících příkladů: for znak in "ahoj": for prvek in [1, 2, 3, 4, 5]: for klíč in {'one': 1, 'two': 2, }: for řádka in open('soubor.txt'): V pozadí za touto pro jazyk zcela základní funkcionalitou stojí tzv. iterátory. Chování iterátorů Prozkoumejme na příkladu řetězce, co činí iterátor iterátorem: I. Smyčka for-in se stará o výrobu iterátorů tak říkajíc za běhu. Například pro řetězec je výsledné chování známé a následující: >>> text = "ahoj" >>> for znak in text: print(znak) a h o j II. Ve skutečnosti se na pozadí postupně provedou následující kroky:

Python (2011-05-05) : Iterátory 2 of 5 # Vstupní objekt (zde řetězec), po kterém chceme iterovat: >>> txt = "ahoj" # Řetězce mají k dispozici magickou metodu iter ().. >>> txt. iter <method-wrapper ' iter ' of str object at 0x00D682A0> #..která se používá pro konstrukci iterátoru: >>> it = iter(txt) >>> it <str_iterator object at 0x00DAE030> # Na iterátorech je pak definována magická metoda next ().. >>> it. next <method-wrapper ' next ' of str_iterator object at 0x00DAE030> #..která vrací následující prvek: 'a' 'h' 'o' 'j' # Je-li iterátor vyčerpán, obdržíme při pokusu o získání jeho dalš Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> next(it) StopIteration Smyčka for-in tedy na pozadí pomocí funkce iter() vytvořila z předhozeného objektu iterátor, po kterém následně pomocí volání next() postupně procházela prvek po prvku, dokud nenarazila na výjimku StopIteration, na které ukončila svoji činnost. III. Je zřejmé, že aby se objekt choval jako iterátor, musí definovat metodu next () pro vrácení dalšího prvku sekvence. Ve většině případů je tato metoda definována přímo na příslušném objektu, pak tudíž stačí, aby metoda iter () vracela přímo tento objekt.

Python (2011-05-05) : Iterátory 3 of 5 V případě konečného iterátoru se musí objekt postarat i o vrácení výjimky StopIteration ve správnou chvíli. Nekonečný iterátor Vytvořit iterátor na objektové úrovni tedy zahrnuje trochu víc práce. Pro mnoho aplikací si však vystačíme s použitím generátorů, které se o tvorbu iterátorů starají automaticky. Pro srovnání se podívejme na příklad nekonečného generátoru a iterátoru pro generování sudých čísel: I. Zavedení jako generátor: >>> def sudá_čísla(): číslo = 0 while True: číslo += 2 yield číslo >>> g = sudá_čísla() >>> next(g) 2 >>> next(g) 4 >>> next(g) 6 II. Zavedení jako iterátor:

Python (2011-05-05) : Iterátory 4 of 5 >>> class SudáČísla: "Iterátor generující sudá čísla." def init (self): self.číslo = 0 def iter (self): return self def next (self): self.číslo += 2 return self.číslo >>> sc = SudáČísla() >>> sc < main.sudáčísla object at 0x00DC62B0> >>> it = iter(sc) >>> it < main.sudáčísla object at 0x00DC62B0> 2 4 6 V porovnání velmi jednoduchá generátorová notace v sobě zahrnuje celou mašinérii, kterou je jinak pro vytvoření obdobně se chovajícího objektu potřeba vytvořit. V případě nekonečného generátoru sice odpadá vyvolání výjimky StopIteration po vyčerpání dat pro iteraci, ale zavedení obslužných metod iterace ( iter () a next ()) a uložení lokálních proměnných a aktuálního stavu (pomocí atributu self.číslo) si musíme zařídit sami. Konečný iterátor Nyní už jenom ve zkratce proveďme stejné srovnání pro konečný generátor a iterátor sloužící k výpisu sekvence v opačném pořadí: I. Zavedení jako generátor:

Python (2011-05-05) : Iterátory 5 of 5 >>> def reverse(data): for index in range(len(data)-1, -1, -1): yield data[index] >>> for char in reverse('ahoj!'): print(char)! j o h A II. Zavedení jako iterátor: >>> class Reverse: "Iterator for looping over a sequence backwards" def init (self, data): self.data = data self.index = len(data) def iter (self): return self def next (self): if self.index == 0: raise StopIteration self.index = self.index - 1 return self.data[self.index] >>> for char in Reverse('Ahoj!'): print(char)! j o h A