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

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

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

Programování v jazyce JavaScript

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Úvod do programování 6. hodina

Programování v Pythonu

Algoritmizace a programování

VISUAL BASIC. Práce se soubory

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

Cvičné příklady Hodina 8 Cvičný 1

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

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

Programování v Pythonu

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.

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

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

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

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

C2110 Operační systém UNIX a základy programování

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

MQL4 COURSE. By Coders guru -8- Proměnné

Programovací jazyk Pascal

ČVUT FIT: BI-SKJ: Perl

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

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

Hlavní funkce pro práci s řetězci

Regulární výrazy. Vzory

Programování v Pythonu

Práce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing)

Programování. Bc. Veronika Tomsová

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

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

Formátové specifikace formátovací řetězce

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

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

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

7. Datové typy v Javě

MQL4 COURSE. By Coders guru -3 DATA TYPES. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět:

FUNKCE 3. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika

Algoritmy a datové struktury

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

Preprocesor a koncepce (větších) programů. Úvod do programování 2 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

--Různé-- Ovladače souborů Formáty Typeglob - záznamy z tabulky symbolů - různé typy objektů se stejným jménem: jmeno %jmeno,&jmeno...

Střední odborná škola a Střední odborné učiliště, Hořovice

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

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

Operační systémy 2: Zápočtové úkoly

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

- jak udělat konstantu long int: L long velka = 78L;

Spojování textových řetězců na listu

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

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

Amos Software Jednoznakové předložky. Co je modul Jednoznakové předložky. Instalace. Postup pro operační systém Windows:

Jazyk C# a platforma.net

Programování v jazyce JavaScript

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 7

Lokální definice (1) plocha-kruhu

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

Datové typy a jejich reprezentace v počítači.

Ukázka knihy z internetového knihkupectví

Konečný automat. Jan Kybic.

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

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

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

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Dokumentace k nevizuálnímu rozhraní aplikace DopisOnline

Druhy souborů. textové. binární. nestrukturované txt strukturované - ini, xml, csv. veřejné bmp, jpg, wav proprietární docx, cdr, psd

Algoritmizace a programování

Výčtový typ strana 67

Následující tabulka obsahuje typy objektů podle jejich pojmenovávání: počáteční písmeno jména

Amos Software Jednoznakové předložky. Co je modul Jednoznakové předložky. Instalace. Zkušební režim. Odemknutí plné funkčnosti

Ukázka knihy z internetového knihkupectví

Testování a spolehlivost. 1. Laboratoř Poruchy v číslicových obvodech

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Sada 1 - Základy programování

Algoritmizace prostorových úloh

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

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

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

ZÁKLADY PROGRAMOVÁNÍ & ALGORITMIZACE VE VBA

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-24) : Řetězce 1 of 12 Python Řetězce Úvod Řetězce nejsnadněji zavedeme jako string literal pomocí uvozovek či apostrofů. Platí přitom pravidlo, že pro krátké řetězce na jednu řádku stačí uvozovky jednoduché, pro dlouhé řetězce na řádek více uvozovky trojté: Program strings1.py : s1_short = 'Ahoj, světe!' s1_long = '''Příliš žluťoučký k úpěl ďábelské ódy.''' s2_short = "Ahoj, světe!" s2_long = """Příliš žluťoučký k úpěl ďábelské ódy.""" Výstup: Ahoj, světe! Příliš žluťoučký kůň úpěl ďábelské ódy. Ahoj, světe! Příliš žluťoučký kůň úpěl ďábelské ódy. print( s1_short ) print( s1_long ) print() print( s2_short ) print( s1_long ) Kolizní uvozovky uvnitř řetězců je samozřejmě třeba iskejpovat (standardně pomocí \, který samotný pak tudíž musíte zapsat jako \\), jinak můžete použít (téměř) klasické céčkovské řídící sekvence (escape sequences): Program strings2.py : print( "Ahoj, 'Pavle', jak se má print( "Ahoj, \"Pavle\", jak se print() print( "Ahoj, Pavle,\njak se máš print( "Ahoj, Pavle,\n\tjak se m Výstup: Ahoj, 'Pavle', jak se máš. Ahoj, "Pavle", jak se máš. Ahoj, Pavle, jak se máš. Ahoj, Pavle, jak se máš. Pokud nechcete, aby se řídící sekvence uvnitř řetězců vyhodnocovaly,

Python (2011-02-24) : Řetězce 2 of 12 musíte řetězec označit jako raw: Program strings3.py : print( r"ahoj, Pavle,\njak se má print( R"Ahoj, Pavle,\n\tjak se Výstup: Ahoj, Pavle,\njak se máš. Ahoj, Pavle,\n\tjak se máš. Řetězce jako sekvence Řetězce v Python'u 3.X jsou automaticky unicodové => každý jeden viditelný znak je reprezentován proměnným počtem bajtů. Ale z hlediska běžné práce s řetězci jako sekvenčními typy (kterými řetězce jsou) nás to nemusí zajímat, protože se chovají právě tak, jak bychom čekali nejmenší podjednotka řetězce je právě jeden znak. Jelikož řetězce patří mezi sekvence, máme k dispozici celou armádu sekvenčních operací:

Python (2011-02-24) : Řetězce 3 of 12 >>> xs = "Ahoj, světe!" # délka sekvence >>> len(xs) 12 # konkrétní prvek >>> xs[3] 'j' >>> xs[-3] 't' # různé výřezy >>> xs[3:9] 'j, svě' >>> xs[3:9:2] 'j v' >>> xs[3:] 'j, světe!' >>> xs[-3:] 'te!' # dotaz na výskyt prvku >>> 'a' in xs >>> 'A' in xs # dvě spojené kopie >>> xs * 2 'Ahoj, světe!ahoj, světe!' Po sekvencích se navíc přirozeně prochází smyčkou: >>> for x in xs:... print(x)... A h o j, s v ě t e!

Python (2011-02-24) : Řetězce 4 of 12 Případně pokud je důležitá i pozice výskytu znaku: >>> for (i, x) in enumerate(xs):... print(i, x)... 0 A 1 h 2 o 3 j 4, 5 6 s 7 v 8 ě 9 t 10 e 11! Řetězce jako neměnitelné sekvence Řetězce patří mezi sekvence neměnitelné (immutable), což znamená, že jejich obsah po vytvoření již není možné měnit: >>> xs = "řetězec" >>> xs[3] 'ě' >>> xs[3] = 'X' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment Spojením dvou řetězců vzniká řetězec zcela nový, proto následující kód je v pořádku: >>> xs = xs + " ukázkový" >>> xs 'řetězec ukázkový' Formátování výstupu Pro formátované vkládání hodnot z objektů dovnitř řetězce slouží metoda format(). Je ji možno použít jak pozičně, tak za pomoci pojmenovaných argumentů (což je ukecanější, ale může to být v některých situacích přehlednější):

Python (2011-02-24) : Řetězce 5 of 12 >>> "Prvek {0} by měl mít průměr {1:.3} cm.".format( 'X', 1/3 ) 'Prvek X by měl mít průměr 0.333 cm.' >>> "Prvek {} by měl mít průměr {:.3} cm.".format( 'X', 1/3 ) 'Prvek X by měl mít průměr 0.333 cm.' >>> "Prvek {jmeno} by měl mít průměr {prumer:.3} cm.".format( jmen 'Prvek X by měl mít průměr 0.333 cm.' Při zarovnávání textu pro výstup nejen na konzoli se vám asi budou hodit následující tři řetězcové metody: >>> xs = "AHOJ" >>> xs.center(40) ' AHOJ ' >>> xs.center(40, '*') '******************AHOJ******************' >>> xs.ljust(40) 'AHOJ ' >>> xs.ljust(40, '-') 'AHOJ------------------------------------' >>> xs.rjust(40) ' AHOJ' >>> xs.rjust(40, '+') '++++++++++++++++++++++++++++++++++++AHOJ' Analýza obsahu I Pro obecné posouzení vybraných vlastností řetězce dobře poslouží následující metody (pouze výběr):

Python (2011-02-24) : Řetězce 6 of 12 >>> '123'.isalnum() >>> '123abc'.isalnum() >>> '123abc+-*/'.isalnum() >>> 'abc'.isalpha() >>> 'abc123'.isalpha() >>> '123'.isdigit() >>> '123 '.isdigit() >>> ' '.isspace() >>> ' baf '.isspace() >>> 'abc'.islower() >>> 'abc'.islower() >>> 'ABC'.isupper() >>> 'AbC'.isupper() >>> 'Svět'.istitle() >>> 'Svět Je'.istitle() >>> 'Svět je'.istitle() >>> 'ahoj'.isidentifier() >>> '123ahoj'.isidentifier() Analýza obsahu II Kromě metod na zjišťování globálních vlastností řetězce z předchozího slajdu máme k dispozici i několik dalších metod zaměřených na vyhledávání podřetězců:

Python (2011-02-24) : Řetězce 7 of 12 >>> 'řetězec'.count('t') 1 >>> 'řetězec'.count('e') 2 >>> 'řetězec'.count('w') 0 >>> xs = "Nesnesu se se sestrou." >>> xs.count('se') 3 >>> 'řetězec'.startswith('ř') >>> 'řetězec'.startswith('ř') >>> 'řetězec'.endswith('c') >>> 'řetězec'.endswith('u') >>> xs = "Nesnesu se se sestrou." >>> xs.startswith('nes') >>> xs.startswith('nest') >>> xs.endswith('ou.') >>> xs.endswith('ou') Konkrétně vyhledávat podřetězce umožňují následující metody: >>> xs = "There were 42 monkeys in the airplane." >>> xs.find('e') # najdi první výskyt 2 >>> xs.rfind('e') # najdi poslední výskyt 36 >>> xs.find('e', 10) # hledej v xs[10:] 18 >>> xs.find('e', 10, 17) # hledej v xs[10:17] -1 >>> xs = "Nesnesu se se sestrou." >>> xs.find('se') 8 >>> xs.rfind('se') 14 >>> xs.find('se', 12) 14

Python (2011-02-24) : Řetězce 8 of 12 Úprava obsahu velikost písmen Několik metod je zaměřených na práci s velikostí písmen: >>> xs = "Ahoj, světe!" >>> xs.swapcase() 'ahoj, SVĚTE!' >>> xs.upper() 'AHOJ, SVĚTE!' >>> xs.lower() 'ahoj, světe!' >>> xs.title() 'Ahoj, Světe!' >>> 'ahoj, světe!'.capitalize() 'Ahoj, světe!' Úprava obsahu odstraňování znaků Řetězec můžeme snadno zbavit na obou koncích nechtěných znaků: >>> xs = '12 to by nešlo 24' >>> xs.strip('1234') ' to by nešlo ' >>> xs.lstrip('1234') ' to by nešlo 24' >>> xs.rstrip('1234') '12 to by nešlo ' Bez udání parametru jsou výchozou hodnotou do všech tří funkcí prázdné znaky (whitespace):

Python (2011-02-24) : Řetězce 9 of 12 >>> xs = ' to by nešlo ' >>> xs.strip() 'to by nešlo' >>> xs.lstrip() 'to by nešlo ' >>> xs.rstrip() ' to by nešlo' Úprava obsahu záměna znaků Výskyty nějakého podřetězce můžeme snadno nahradit podřetězcem jiným: >>> xs = "dog,cat,pig,hippo,chicken" >>> xs.replace(',', ' - ') 'dog - cat - pig - hippo - chicken' >>> xs.replace(',', ' - ', 2) 'dog - cat - pig,hippo,chicken' >>> xs = "333 stříbrných stříkaček stříkalo přes 333 stříbrných st >>> xs.replace('333', 'třistatřiatřicet') 'třistatřiatřicet stříbrných stříkaček stříkalo přes třistatřiatři splitting & joining I Řetězec můžeme podle zadaného podřetězce rozdělit na více částí. Nejobecnější metodou je metoda split(): >>> xs = "Ahoj, světe! Jak se máš?" >>> xs.split() ['Ahoj,', 'světe!', 'Jak', 'se', 'máš?'] >>> xs.split(' ') ['Ahoj,', 'světe!', 'Jak', 'se', 'máš?'] >>> xs.split(' ', 2) ['Ahoj,', 'světe!', 'Jak se máš?'] >>> xs.split(',') ['Ahoj', ' světe! Jak se máš?'] >>> xs.split(' s') ['Ahoj,', 'věte! Jak', 'e máš?']

Python (2011-02-24) : Řetězce 10 of 12 Pro srovnání ještě metoda rsplit() až na neúplné rozřezání řetězce zprava se chová stejně jako split(): >>> xs.split(' ', 2) ['Ahoj,', 'světe!', 'Jak se máš?'] >>> xs.rsplit(' ', 2) ['Ahoj, světe! Jak', 'se', 'máš?'] Trochu podobná metoda partition(), resp. rpartition(), rozdělí zadaný řetězec podle podle prvního, resp. posledního, výskytu udaného separátoru: >>> xs = "Ahoj, světe! Jak se máš?" >>> xs.partition('e') ('Ahoj, svět', 'e', '! Jak se máš?') >>> xs.rpartition('e') ('Ahoj, světe! Jak s', 'e', ' máš?') >>> xs.partition('jak') ('Ahoj, světe! ', 'Jak', ' se máš?') K dispozici máme ještě metodu specializovanou na rozdělování řetězců obsahujících odřádkování: Program splitlines.py : Výstup: xs = """Tady je velmi dlouhý tex který zabírá více řádek. Aby tak nezabíral, když je v něm napsáno nesmyslů, že. """ # standardně za použití separáto x1 = xs.split("\n") print( x1 ) # za pomoci vestavěné metody x2 = xs.splitlines() print( x2 ) ['Tady je velmi dlouhý text,', ' ['Tady je velmi dlouhý text,', '

Python (2011-02-24) : Řetězce 11 of 12 splitting & joining II Doplňkovou metodou ke split() je metoda join(): >>> xs = "Ahoj, světe! Jak se máš?" >>> ys = xs.split() >>> ys ['Ahoj,', 'světe!', 'Jak', 'se', 'máš?'] >>> ' '.join(ys) 'Ahoj, světe! Jak se máš?' Nic nám samozřejmě nebrání použít jiný separátor: >>> '- -'.join(ys) 'Ahoj,- -světe!- -Jak- -se- -máš?' Typické je použití k normalizaci řetězce: >>> xs = " Hello World, I am here. " >>> xs ' Hello World, I am here. ' >>> ' '.join( xs.split() ) 'Hello World, I am here.' ord() & chr() Pro operaci s řetězci na úrovni jednotlivých znaků slouží dvě standardní funkce ord() a chr(). I. Funkce ord() převede zadaný jeden znak (tedy řetězec o délce jedna) na codepoint-číslo odpovídající tomuto znaku v Unicode-tabulce: >>> ord('a') 97 >>> ord('ř') 345 II. Komplementární funkce chr() převádí naopak zadané celé číslo představující unicodový codepoint na odpovídající znak (tedy řetězec délky jedna):

Python (2011-02-24) : Řetězce 12 of 12 >>> chr(97) 'a'