Programování v Pythonu

Podobné dokumenty
Programování v Pythonu

Programování v Pythonu

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ů

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

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

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Lekce 2. Řetězce a práce s nimi. Vstup a výstup. C2184 Úvod do programování v Pythonu podzim 2016

Programování v Pythonu

IB111 Základy programování Radek Pelánek

Programování v Pythonu

Programování v Pythonu

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

Jazyk C# a platforma.net

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

Programování v jazyce JavaScript

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.

Funkce, řetězce, moduly

Programování v Pythonu

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

3. Řízení běhu programu

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

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

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

6. Příkazy a řídící struktury v Javě

První kapitola úvod do problematiky

Úvod do programovacích jazyků (Java)

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

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

IB111 Základy programování Radek Pelánek

Regulární výrazy. Vzory

Konečný automat. Jan Kybic.

Sekvenční a podmíněné provádění

Zápis programu v jazyce C#

Programování v Pythonu

Programování v Pythonu

Řídicí struktury. alg3 1

7. Datové typy v Javě

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

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

Funkcionální programování. Kristýna Kaslová

Obsah. O auto ro vi 13 V ěnování 14 Poděkování 15 Z p ětn á vazba od čtenářů 16. P rogram ování pro M in ecraft v Jávě 17

Programování v Pythonu

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Algoritmizace a programování

Programování: základní konstrukce. IB111 Úvod do programování

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Programování v Javě I. Leden 2008

Python. Klára Pešková.

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

Prezentace a vysvětlení programového prostředí NXC

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Úvod do programovacích jazyků (Java)

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Programování v Javě I. Únor 2009

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

IB111 Úvod do programování skrze Python

Objektově orientované programování

Programovací í jazyk Haskell

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

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

ČVUT FIT: BI-SKJ: Perl

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

Algoritmizace a programování

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Programování v jazyce JavaScript

Programování v Pythonu

Programování v Pythonu

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

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

Pole / Arrays. Jan Kybic.

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

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

5 Přehled operátorů, příkazy, přetypování

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.

Algoritmizace prostorových úloh

Programovací jazyk Pascal

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

8 Třídy, objekty, metody, předávání argumentů metod

Úvod do programování v jazyce Java

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

NPRG030 Programování I, 2017/18 1 / :22:16

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->

JAVA. Další jazyky kompilovatelné do Java byte-code

Rekurze a rychlé třídění

ADT/ADS = abstraktní datové typy / struktury

MULTIPLATFORMNÍ PROGRAMOVÁNÍ Přednáška č.10 Programovací jazyk Python, úvod, instalace, základní vlastnosti a příkazy. Programovací jazyk Python

HTTP. Webový server. generátor HTML stránek (CGI, Perl, PHP, Python, Ruby, Java, ASP.NET) zpracování požadavku/ odeslání odpovědi.

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

O autorovi O odborném korektorovi Úvod 17 Vývoj jazyka Java Java SE 8 Struktura této knihy Předchozí zkušenosti s programováním nejsou potřebné

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Programovací jazyk Haskell

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-02-17) : Úvod do Python'u 1 of 13 Python Úvod do Python'u Historie Pythonu Guido van Rossum (BDFL), přelom 80. a 90. let, následovník jazyka ABC 16. 10. 2000 verze 2.0 (komunitní vývoj, full garbage collector, prvotní podpora pro Unicode) 3. 12. 2008 verze 3.0, záměrně první zpětně nekompatibilní (skutečná podpora Unicode'u, sjednocení syntaxe a vnitřností, vyčištění systémové knihovny) Řada 2.x tu bude ještě dlouho (externí knihovny), řada 3.x je ale v mnoha ohledech hezčí jazyk (a zatím prochází dosti překotným vývojem). Python 2.x versus Python 3.x nejviditelnější změna print 'Ahoj, Karle!' vs. print('ahoj, Karle!') nejdůkladnější změna u"ahoj, světe!" vs. "Ahoj, světe!" sjednocení syntaxe a vnitřností vyčištění systémové knihovny atd. Užitečné odkazy

Python (2011-02-17) : Úvod do Python'u 2 of 13 http://python.org http://python.org/doc/ http://cheeseshop.python.org/pypi http://code.activestate.com/recipes/langs/python/ http://diveintopython.org http://diveintopython3.org Charakter jazyka Python je Dále též interpretovaný, dynamicky typovaný high-level jazyk procedurální, ale i objektový a dokonce i funkcionální všechno v Pythonu je objekt, navíc dokonce first-class object (tj. je možné cokoliv předat jako argument do funkce; tedy samozřejmě třeba i jinou funkci!) "Ahoj, světe!".split() proměnné se nedeklarují, rovnou se jim přiřazuje hodnota (ale dosud nepoužitou proměnnou nemůžete zavolat, dostali byste NameException) case-sensitive (a má odpovídající konvence na psaní názvů jednotlivých typů objektů) joined_lower - funkce & metody & atributy, ALL_CAPS - konstanty, StudlyCaps - třídy Poznámka ke kódování # -*- coding: utf-8 -*- # encoding: utf-8 v historicky dávné době byl Python asi čistě ASCII (nevím, nezažil :)

Python (2011-02-17) : Úvod do Python'u 3 of 13 v Pythonu 2.x se dá určit kódování souboru, ale řetězce jsou brány jako sekvence osmibitových znaků "ASCII string" vs. u"ahoj, světe!" až v Pythonu 3.x je konečně všechno nativně UTF-8 (a to dokonce až na úroveň názvů proměnných či funkcí) "Ahoj, světe!" vs. b"bytes" Ale spousta nástrojů s tím ještě nepočítá! Klíčová slova False class finally is return None continue for lambda try def from nonlocal while and del global not with as elif if or yield assert else import pass break except in raise >>> help() >>> help('del') Comments & docstrings # funkce pro zpracování vstupního čísla def fnce(číslo): """ Funkce fnce() očekává na vstupu právě jedno číslo. Na svém výstupu vrací toto číslo prohnané modulem zpracovator. """ import zpracovator n = zpracovator.zpracuj() return n Datové typy proměnné (mutable) neproměnné (immutable)

Python (2011-02-17) : Úvod do Python'u 4 of 13 proměnné (mutable) neproměnné (immutable) Strings Lists Tuples Sets Frozen Sets Byte Arrays Bytes Dictionaries Číselné: int, float, complex Sekvenční: str, list, tuple, range, bytes, bytearray Množinové: set, frozenset Mapovací: dict Příklady (datové typy) Boolean, False Number 1, 2.3, 4/5, 2+3j String "Ahoj, světe!" Byte b"" List [2, 'a', {},] Tuple (2, 'a', {},) Set {2, 'a', {},} Dictionary { 'jmeno': ('Karel', 'Novák'), 'vek': 23, } Operátory číselné: + - * ** / // % logické: and or not porovnávací: < > ==!= <= >=

Python (2011-02-17) : Úvod do Python'u 5 of 13 bitové: << >> & ^ ~ speciální: in, not in ; is, is not Občas je možné si výraz zkrátit: a = a + 3 je totéž jako a += 3 Pozor na priority (a typy porovnávaných objektů)! Už z důvodu čitelnosti je lepší závorkovat. Příklady (typy, operátory, porovnávání) Čísla: >>> a = 5 >>> b = 3 >>> a + b 8 >>> type(5) <class 'int'> >>> a += 4 >>> a 9 >>> c = 1.5 >>> c 1.5 >>> type(c+a) <class 'float'> >>> 5/2 2.5 >>> 5//2 2 >>> 5**2 25 Řetězce: >>> s = "ahoj" >>> type(s) <class 'str'> >>> s + " světe" 'ahoj světe' >>> len(s) 4 >>> s[0] 'a' >>> s[-1] 'j'

Python (2011-02-17) : Úvod do Python'u 6 of 13 Přiřazení a porovnání: >>> a = b = 0 >>> a 0 >>> b 0 >>> a == b >>> type(3 == 5) <class 'bool'> >>> "bla" == 'bla' >>> (1, 2) == (1, 2) >>> (1, 2) == (1, 2, ) >>> 1, 2 == 1, 2 (1, False, 2) is versus is not: >>> a = 1 >>> b = 1 >>> a == b >>> a is b >>> a = [1] >>> b = [1] >>> a == b >>> a is b False >>> a is not b Přiřazení (či spíše pojmenovávání )

Python (2011-02-17) : Úvod do Python'u 7 of 13 >>> xs = ['a', 'h', 'o', 'j'] >>> ys = xs >>> ys ['a', 'h', 'o', 'j'] >>> xs.remove('o') >>> xs ['a', 'h', 'j'] >>> ys ['a', 'h', 'j'] Proměnné (mutable) typy jsou v Python'u předávány odkazem, neproměnné (immutable) prozměnu zase hodnotou! Na začátku si na tom asi párkrát nabijete nos, ale časem na tuhle nakonec celkem logickou podivnost (zvanou, pokud vůbec nějak, předávání objektem) zvyknete. Základní řídící konstrukce v1, v2 = 1.3, "ahoj" del v1 if PODMINKA: BLOK for i in SEKVENCE: BLOK while PODMINKA: BLOK Všimněte si použití odsazování ( rozpoznávací znak Python'u :-) jako oddělovače bloků! Příklady (řídící konstrukce) Cyklus for a range():

Python (2011-02-17) : Úvod do Python'u 8 of 13 >>> for word in ["welcome", "to", "python"]: print(word, end=" ") welcome to python >>> >>> sum = 0 >>> for i in range(10): sum += i >>> sum 45 >>> range(5) range(0, 5) >>> type( range(5) ) <class 'range'> >>> list( range(5) ) [0, 1, 2, 3, 4] >>> range(4,6) range(4, 6) >>> list( range(4,6) ) [4, 5] >>> range(1,7,2) range(1, 7, 2) >>> list( range(1,7,2) ) [1, 3, 5] Cyklus while: >>> while : print( "ahoj" ) break ahoj >>> i = 0 >>> while i < 5: print(i) i += 1 0 1 2 3 4 Rozhodování if elif else a podmínky:

Python (2011-02-17) : Úvod do Python'u 9 of 13 >>> if 4 == 5: print('foo') else: print('bar') bar >>> False and False or >>> not False >>> a = "foo" >>> if a in ['blue', 'yellow', 'red']: print( a + " is a color." ) elif a in ['US', 'China']: print( a + " is a country." ) else: print( "I don't know what " + a + " is!" ) I don't know what foo is! Sekvence Konečné uspořádané množiny prvků indexovaných nezápornými čísly. Sdílí mnoho vlastností, metod apod.: len(xs) vrací délku příslušné sekvence xs xs[i] vrací prvek sekvence na pozici i (smysl má i výraz typu xs[-2]) xs[i:j] vrací podsekvenci od indexu i po index j-1 (smysl mají i výrazy typu xs[:3], xs[-2:] apod., někde též xs[i:j:k]) zs = xs + ys spojování sekvencí for x in xs: smyčka přes všechny prvky sekvence x in xs zjištění výskytu prvku v sekvenci Pár příkladů na řetězcích:

Python (2011-02-17) : Úvod do Python'u 10 of 13 >>> s = "Ahoj, světe!" >>> len(s) 12 >>> s[0] 'A' >>> s[-2] 'e' >>> s[2:5] 'oj,' >>> s[:5] 'Ahoj,' >>> s[-4:] 'ěte!' >>> s[2:9:3] 'o ě' >>> for c in s: print(c, end=' ') A h o j, s v ě t e! >>> >>> 'A' in s >>> 'a' in s False Triky s přiřazováním Typicky pythonovské prohození hodnot dvou proměnných: a, b = b, a Přiřazení blíže neurčeného počtu dat do menšího počtu proměnných: >>> a, *b, c = 'první', 1, 2, 'ahoj', 'poslední' >>> a 'první' >>> b [1, 2, 'ahoj'] >>> c 'poslední' Ukázka QuickSort

Python (2011-02-17) : Úvod do Python'u 11 of 13 def qs(a): if a == []: return [] else: pivot = a[0] left = [x for x in a if x < pivot] right = [x for x in a[1:] if x >= pivot] return qs(left) + [pivot] + qs(right) Ukázka faktoriál Klasicky pomocí rekurze: def faktorial(n): if n == 0: return 1 else: return n * faktorial(n-1) print( faktorial(9) ) Méně přehledně, ale také podstatně méně náročně pomocí cyklu: n = 9 out = 1 while n: out *= n n -= 1 print( out ) Líně pomocí knihovní metody: import math # Return x factorial. Raises ValueError if x is not integral or is print( math.factorial(9) ) Ukázka prvočísla Hodně neklasicky, ale neoptimalizovaně:

Python (2011-02-17) : Úvod do Python'u 12 of 13 >>> for n in range(100): for x in range(2,n): if n % x == 0: break else: print( n, end=' ') 0 1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 Poznámka: Větev s else u cyklu for se provede pouze tehdy, je-li for-cyklus ukončen normálně, tedy nikoli právě na break. Odbočka I - print() Pravděpodobně nejpoužívanější funkce Python'u má syntaxi: print( [object, ] [, sep=' '][, end='\n'][, file=sys.stdout] ) Příklad: >>> s1, s2, s3 = 'ahoj', 'světe', 'jak se máš' >>> print(s1, s2, s3, sep=' ', end='\n') ahoj světe jak se máš Odbočka II - pprint() >>> tup = ('spam', ('eggs', ('lumberjack', ('knights', )))) >>> stuff = ['a' * 10, tup, ['a' * 10, 'b' * 10], ['c' * 8, 'd' * 8]] >>> import pprint >>> pprint.pprint( stuff, width=40 ) ['aaaaaaaaaa', ('spam', ('eggs', ('lumberjack', ('knights',)))), ['aaaaaaaaaa', 'bbbbbbbbbb'], ['cccccccc', 'dddddddd']]

Python (2011-02-17) : Úvod do Python'u 13 of 13 Závěrečná odbočka - dir() Snad nejužitečnější funkce v Python'u: dir( OBJEKT ) Příklad: >>> dir( 'ahoj' ) [' add ', ' class ', ' contains ', ' delattr ', ' doc ', Typ řetězec má tedy následující atributy: magické : add getattribute le reduce class getitem len reduce_ex contains getnewargs lt repr delattr getslice mod rmod doc gt mul rmul eq hash ne setattr ge init new str běžné : capitalize isalpha lstrip split center isdigit partition splitlines count islower replace startswith decode isspace rfind strip encode istitle rindex swapcase endswith isupper rjust title expandtabs join rpartition translate find ljust rsplit upper index lower rstrip zfill isalnum