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

Programování v Pythonu

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

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

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ů

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.

C# konzole Podíl dvou čísel, podmínka IF

Automatické testování softwaru. Testujte svůj kód! Předpoklady: Příklad: sum_digits() Možnost 1: Zkusíme funkci použít v konzoli Pythonu.

Algoritmizace a programování

Programování v Pythonu

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

Programujeme v softwaru Statistica - příklady

Úvod do programovacích jazyků (Java)

ABC Linux běží z CD české prostředí tištěná příručka obsah portálu Mutt Jak začít? Jan Fuchs

VISUAL BASIC. Práce se soubory

PHP a Large Objecty v PostgreSQL

PSK3-9. Základy skriptování. Hlavička

Basic256 - úvod do programování Příklady. ing. petr polách

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

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

Konstruktory překladačů

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

Algoritmizace a programování

Programování v jazyce JavaScript

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

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

Úvod do programování 6. hodina

Úvod do Operačních Systémů

Kurz LSL skriptování. Shiny Iceberg 2009

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

PSP Validator Documentation

15. Projekt Kalkulačka

Objektově orientované programování v jazyce Python

První kapitola úvod do problematiky

10 Balíčky, grafické znázornění tříd, základy zapozdření

Programování v Pythonu

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

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Stručný úvod pro programátory. Michal Kuchta

Jaku b Su ch ý 1

Objektově orientované programování v jazyce Python

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

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

PHP tutoriál (základy PHP snadno a rychle)

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

MAXScript výukový kurz

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

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

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

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

Odorik Documentation. Vydání 0.6

FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 5. CVIČENÍ

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

Programovací í jazyk Haskell

Stručný návod k programu Octave

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

Jazyk C++, některá rozšíření oproti C

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

KTE / ZPE Informační technologie

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

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

DUM 06 téma: Tvorba makra pomocí VBA

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

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

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

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

KTE / ZPE Informační technologie

6. blok část B Vnořené dotazy

Popis programu EnicomD

Jak spustit PC Fand na 64bit Windows - VdosPlus instalace

PROGRAMOVÁNÍ V C++ CVIČENÍ

Programovací jazyk Haskell

Apache Cordova (PhoneGap 3)

Regulární výrazy. Vzory

IUJCE 07/08 Přednáška č. 1

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

DUM 20 téma: Test dávky

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

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

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

Jazyk C# (seminář 5)

Paradigmata programování 1

Algoritmizace a programování

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

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

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-03-10) : Zpracování vstupu 1 of 8 Python Zpracování vstupu Úvod Uživatelský vstup do programu můžeme v zásadě rozdělit na dva druhy: přímý vstup z klávesnice do běžícího programu vstup do programu v podobě parametrů Python nabízí několik různých způsobů, jak zařídit obě možnosti vstupu. V dalším se seznámíme se základními z nich. Funkce input() I. Nejzákladnějším způsobem, jak z běžícího programu vyvolat interakci s uživatelem, je pomocí metody input(): >>> answer = input() Ahoj, světe! >>> answer 'Ahoj, světe!' Uvedený kód čeká na zadání vstupního řetězce ukončeného klávesou. Zadaný řetězec (bez odřádkování, to jen potvrdilo vstup) je předán jako návratová hodnota funkce (v našem případě tedy do proměnné answer). Má-li vstupem být třeba celé číslo, je třeba vstup z vráceného řetězce na celé číslo, tj. např. answer = int(answer). II. Metoda input([prompt]) má jeden velmi užitečný nepovinný řetězcový parametr, tzv. prompt: >>> answer = input('zadej text: ') Zadej text: Ahoj, světe! >>> answer 'Ahoj, světe!' PS: Chcete-li chování této uživatelské výzvy vylepšit, můžete před jejím

Python (2011-03-10) : Zpracování vstupu 2 of 8 použitím naimportovat modul readline (dostupný pouze na platformě Unix!). Vstupní řádka pak získá mimo jiné historii a větší možnosti editace (některé klávesové zkratky apod.). Zpracování parametrů skriptu Co se vstupních parametrů skriptu týká, máme v Python'u k dispozici kromě jednoho zcela základního modulu: 0. sys.argv přístup k parametrům skriptu na nejnižší úrovni...také několik generací modulů vyšší úrovně: 1. 2. 3. getopt nejstarší (a co do schopností nejméně vybavená) nadstavba pro práci s argumenty příkazové řádky optparse vylepšení předchozího modulu; dostupné od verze Python'u 2.3 argparse poslední generace modulů pro zpracování argumentů příkazové řádky; dostupné od Python'u 3.2 Zatímco modul sys.argv je zcela základní a veškerou práci s parsováním vstupních agumentů na potřebné hodnoty si musíte obstarat sami, další moduly poskytují nejrůznější vylepšení, jak téhož dosáhnout snadněji. Z důvodu aktuální rošířenosti se podíváme na pár příkladech pouze na modul optparse. Modul sys.argv I. Nejjednodušším způsobem, jak předat právě spouštěnému programu (skriptu) nějaké údaje, je využít vstupních parametrů skriptu: python3 argvs.py Program argvs.py : print( sys.argv ) print( sys.argv[0] ) print( sys.argv[1:] ) ['argvs.py'] argvs.py []

Python (2011-03-10) : Zpracování vstupu 3 of 8 python3 argvs.py arg1 arg2 arg3 Program argvs.py : print( sys.argv ) print( sys.argv[0] ) print( sys.argv[1:] ) ['argvs.py', 'arg1', 'arg2', 'ar argvs.py ['arg1', 'arg2', 'arg3'] Vidíme, že jméno spouštěného programu je předáno jako první prvek v seznamu argumentů, zatímco vše ostatní je rozsekáno podle mezer a předáno jako další prvky seznamu. II. Pokud bychom chtěli předat jako jeden parametr text, který obsahuje mezery, muzíme ho buď uzávorkovat (což funguje všude): python3 argvs.py "arg1a arg1b" arg2 Program argvs.py : print( sys.argv ) print( sys.argv[0] ) print( sys.argv[1:] ) ['argvs.py', 'arg1a arg1b', 'arg argvs.py ['arg1a arg1b', 'arg2']..nebo mezery odiskejpovat (což nezabere pod Windows a navíc se to hůř čte): python3 argvs.py arg1a\ arg1b arg2 Program argvs.py : print( sys.argv ) print( sys.argv[0] ) print( sys.argv[1:] ) ['argvs.py', 'arg1a arg1b', 'arg argvs.py ['arg1a arg1b', 'arg2']

Python (2011-03-10) : Zpracování vstupu 4 of 8 Typické použití v programu bude vypadat asi následovně: if len( sys.argv ) <= 1: print( "Usage: {} ARGUMENT".format( sys.argv[0] ) ) sys.exit() Samozřejmě si musíte pohlídat, že uživatel zadal potřebný počet parametrů a ve správném tvaru. Pokud ne, dejte mu o tom vědět a ukončete provádění skriptu. (Respektive použijte nějaké výchozí hodnoty, je-li to možné, ale pak o tom též nějakým způsobem informujte. Alespoň v README :) PS úplně na závěr: Nezkoušejte míchat parametry s wildcard-znaky, výsledky by vás nejspíš poněkud překvapily... Modul optparse příklad Ukažme si nejdříve chování kódu vybaveného modulem optparse při různých voláních skriptu z příkazové řádky. Daný skript pouze (přehledně) vypisuje, jaké argumenty na příkazové řádce obdržel: I. Nevíme, jak program vůbec zavolat, tak to zkusíme bez parametrů: python3 optparse.mod.py Usage: optparse.mod.py [options] filename optparse.mod.py: error: wrong number of arguments II. Aha, takže přepínače nejsou povinné, ale jméno souboru ano. Tak ho zkusíme přidat (test.html):

Python (2011-03-10) : Zpracování vstupu 5 of 8 python.exe optparse.mod.py test.html {'xhtml_flag': False, 'cssfile': 'style.css'} ['test.html'] III. Vida, přepínače mají nějaké výchozí hodnoty. Nebyla by k nim nějaká nápověda? python3 optparse.mod.py --help Usage: optparse.mod.py [options] filename Options: --version show program's version number and exit -h, --help show this help message and exit -x, --xhtml create a XHTML template instead of HTML -c CSSFILE, --cssfile=cssfile CSS file to link IV. Tak to zkusme všechno najednou: python.exe optparse.mod.py -x -c stylopis.css test.html {'xhtml_flag': True, 'cssfile': 'stylopis.css'} ['test.html']

Python (2011-03-10) : Zpracování vstupu 6 of 8 V. Aby se neřeklo, tak ještě obligátní dotaz na verzi programu :) python.exe optparse.mod.py --version optparse.mod.py 1.0 Modul optparse použití Příklad na předchozím slajdu je upraven podle ukázky na http://www.saltycrane.com/blog/2009/09/python-optparse-example/ (originální dokumentace k modulu optparse je velmi výživná ):

Python (2011-03-10) : Zpracování vstupu 7 of 8 #!/usr/bin/env python # import modulu pro práci s argumenty příkazové řádky from optparse import OptionParser # zavedení parseru vstupu # ~ usage: nápověda pro volání skriptu # ~ version: verze skriptu parser = OptionParser(usage="usage: %prog [options] filename", version="%prog 1.0") # přidání přepínačů # ~ jméno přepínače krátké a dlouhé # ~ action: co provést v přítomnosti přepínače # ~ dest: jméno klíče pro uložení hodnoty přepínače # ~ default: výchozí hodnota pro přepínač # ~ help: nápověda k přepínači parser.add_option("-x", "--xhtml", action="store_true", # tj. nastav "dest" na "T dest="xhtml_flag", default=false, help="create a XHTML template instead of HTML") parser.add_option("-c", "--cssfile", action="store", # nepovinné, protože uložení z dest="cssfile", default="style.css", help="css file to link",) # zparsování vstupu # ~ options: bude obsahovat slovník přepínačů a jejich hodnot { # ~ args: bude obsahovat seznam argumentů [ arg1,... ] (options, args) = parser.parse_args() # na vstupu čekáme právě jeden argument (a to filename) if len(args)!= 1: parser.error("wrong number of arguments") # tisk získaných vstupů print( options ) print( args ) Modul optparse poznámky Už na první pohled je modul optparse poměrně mocný. Pro podrobnosti se podívejte přímo do dokumentace, tady už jen několik poznámek: Přestože se návratová hodnota options z kódu options, args = parser.parse_args() tváří jako slovník, slovník to není :-( Naštěstí to spraví

Python (2011-03-10) : Zpracování vstupu 8 of 8 jedno volání funkce vars(), která převádí svůj argument na slovník (alespoň pokud je to objekt vybavený atributem dict ): options, args = parser.parse_args() options_dict = vars(options) Parametr action má k dispozici následující standardní operace: store (výchozí), store_const, store_true, store_false, append, append_const, count, callback, help. S výhodou můžete použít též parametr type určuje typ argumentu, který příslušný přepínač očekává. Jeho výchozí hodnotou je (nepřekvapivě) "string" (uvozovky jsou důležité), dále můžete použít "int", "float", "complex" a "choice" (viz další bod). Nestačí-li vám to, můžete optparse celkem snadno rozšířit o další typy. Pokud má mít nějaký přepínač pouze jistou množinu povolených hodnot, použijte kombinaci parametrů type="choice" choices=výběr: parser.add_option('-e', '--env', action='store', dest='environment', type='choice', # přepínač je výběrem z definov choices=['production', 'staging', 'testing',], default='production', help='environment to run on',) Přepínače můžete seskupit do více skupin pomocí optparse.optiongroup: # import potřebných konstruktorů from optparse import OptionParser, OptionGroup # zavedení vlastního parseru a (vizuálních) skupin přepínačů parser = OptionParser(..) group1 = OptionGroup(parser, 'NÁZEV', 'POPISEK').. # A) ke každé skupině se chováme stejně, jako dříve k samotnému pa group1.add_option(..).. # B) na konci pak skupinu přepínačů přidáme jako celek do parseru parser.add_option_group(group1)