Mi a Python? A Python alapjainak áttekintése. Példaprogram feladatkit zés. Példaprogram megvalósítás

Hasonló dokumentumok
A Python alapjainak áttekintése

Mi a Python? A Python alapjainak áttekintése. Példaprogram feladatkit zés. Példaprogram megvalósítás

Imperatív programozás

Python tanfolyam Python bevezető I. rész

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Az Összetett hálózatok vizsgálata elektronikus tantárgy részletes követeleményrendszere

Ismerkedés a Python programnyelvvel. és annak micropython változatával

A Python programozási nyelv

Gyakorló feladatok Gyakorló feladatok

A Python programozási nyelv

S z á m í t ó g é p e s a l a p i s m e r e t e k

Python I. Vincze Dávid Miskolci Egyetem, IIT

BASH script programozás II. Vezérlési szerkezetek

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Programozási nyelvek Python

PYTHON. Avagy hosszú az út a BioPythonig

Python bevezető foglalkozás Python bevezető foglalkozás

Imperatív programozás

Listák, szótárak, fájlok Listák, szótárak, fájlok

Hálózatok építése és üzemeltetése

Komputeralgebra Rendszerek

Matematikai programok

Vezérlési szerkezetek Vezérlési szerkezetek: feltételes elágazás és ciklusok

Számítógépes Hálózatok. 1. Gyakorlat

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Imperatív programozás

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét:

Operációs Rendszerek II. labor. 2. alkalom

2016, Funkcionális programozás

Változók és adattípusok Változók és adattípusok

Informatika terméktervezőknek

Bevezetés a programozásba I.

Szkriptnyelvek. 1. UNIX shell

A C# programozási nyelv alapjai

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

2016, Diszkrét matematika

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

2018, Diszkre t matematika. 8. elo ada s

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

2018, Funkcionális programozás

1. Alapok. #!/bin/bash

Ismerkedés a Python programnyelvvel. és annak micropython változatával

Számítógépes Hálózatok. 1. gyakorlat

2015, Diszkrét matematika

Bevezetés a programozásba I.

BME MOGI Gépészeti informatika 4.

2016, Diszkrét matematika

Matematikai programok

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Szoftvertechnológia alapjai Java előadások

Bevezetés a Python programozási nyelvbe

Térinformatikai programozás Pythonban

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

2018, Diszkrét matematika

OOP: Java 1.Gy: Java alapok

Operációs rendszerek gyakorlat

2018, Diszkrét matematika

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

2018, Diszkrét matematika

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

BEVEZETÉS A WEBALKALMAZÁSOK KÉSZÍTÉSÉBE

Függvények Függvények

AWK programozás, minták, vezérlési szerkezetek

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

2018, Diszkre t matematika. 10. elo ada s

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Számítógépes Hálózatok GY 1.hét

Programozási nyelvek JAVA EA+GY 1. gyakolat

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Apple Swift kurzus 3. gyakorlat

A JavaScript főbb tulajdonságai

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

2019, Diszkrét matematika. 1. el adás

OOP: Java 4.Gy: Java osztályok

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

A szerzõrõl... xi Bevezetés... xiii

A programozás alapjai

2018, Funkcionális programozás

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Adatbázis-kezelés ODBC driverrel

Java és web programozás

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

2018, Diszkrét matematika

Objektumorientált Programozás III.

AWK programozás, minták, vezérlési szerkezetek

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Szoftvertervezés és -fejlesztés I.

5. modul - Adatbázis-kezelés

Java és web programozás

.Net adatstruktúrák. Készítette: Major Péter

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Occam 1. Készítette: Szabó Éva

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás alapjai. 5. előadás

Algoritmizálás és adatmodellezés tanítása 1. előadás

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Átírás:

Mi a Python? A Python alapjainak áttekintése Általános célú programnyelv rengeteg beépített és egyéb modullal. Óbudai Egyetem Alba Regia Egyetemi Központ (AREK) Székesfehérvár 2011. szeptember 16. Objektumorientált, de kezd k err l megfeledkezhetnek Funkcionális programozást is lehet vé teszi Platformfüggetlen bytekódot készít Könnyen beágyazhatóak C és Fortran programok Példaprogram feladatkit zés Példaprogram megvalósítás from math import sqrt Készítsünk egy függvényt, amely a egyenlet gyökeit adja vissza. A gyökök: ax 2 + bx + c = 0 x 1,2 = b ± b 2 4ac 2a def masodfoku(a, b, c): D = b**2-4*a*c if D < 0: print "Nincs valós gyök." return elif D == 0: print "Kett s (valós) gyök van." else: print "Két eltér valós gyök van." x1 = -b + sqrt(d) x1 /= 2*a x2 = -b - sqrt(d) x2 /= 2*a return x1, x2

A szerz Miért Python? Na vajon miért? Guido von Rossum, holland A szerz kedvence a Monty Jelenleg a Google Python's Flying Circus alkalmazottja A dokumentációban ajánlott a Monty Python idézet Számok Karakterláncok (string) egész (int) 1, 2123123123123123118978970 "Szelet", 'alma\nkörte', "that's it" Többsoros karakterlánc lebeg pontos ( oat) """A többsoros szövegeket három idéz jel (" vagy ') határolja.""" 3.14, 1.6e-19 (math modul) komplex (complex) 1+3j, 2j Metódusok: upper, center, rjust, split, splitlines... (cmath modul) M veletek: + M veletek +, -, *, /, //, ** (hatvány) M veletek egészeknél % (mod),... (bitenkénti m veletek) "AREK"*3 # AREKAREKAREK

Listák (list) n-esek (tuple) Bármilyen elemei lehetnek l = [1, "alma", 2+3j] Módosíthatjuk: hozzáf zhetünk, beszúrhatunk és törölhetünk bel le elemeket Metódusai: append, insert, count, pop... Új lista egyszer el állítása másikból: lista = ["alma", "egres", "barack"] hosszak = [ len(i) for i in lista ] # [4, 5, 6] lista.append("dió") lista.count("alma") # 1 Listához hasonló, de nem módosítható t = (1, "AREK", [1,2]) Példák értékadásra: (a, b, c) = (1, 2, 3) print a # 1 a, b, c = 1, 2, 3 # Ugyanaz a,b,c = "Ede" print a # 'E' a, b = a+b, a # Nem kell segédváltozó. Indexek, szeletek Szótárak (dictionary) M ködnek listaszer objektumoknál: karakterlánc, lista, tuple 0. elemmel kezdünk. ( MATLAB) s = "Szelet" +---+---+---+---+---+---+ S z e l e t +---+---+---+---+---+---+ 0 1 2 3 4 5 6-6 -5-4 -3-2 -1 Példák: s[0], s[2:4], s[:3], s[-2:] Használható a len() (hossz) függvény rájuk. Egy kulcs azonosít egy elemet. Példák: d = {1: "alma", (18.4, 47.2): "Fehérvár", "alak": "téglalap" } print d[1] # alma print d.keys() # [a, (18.4, 47.2), "alak"] d[1j] = "komplex" Csak nem megváltoztatható elem lehet kulcs.

Logikai (boolean) A Python vezérlési szerkezetei Értéke lehet True és False. Példák: s = "alma" # Értékadás, nem vizsgálat 2 < len(s) < 10 # True s == s.lower() and s!= "apple" # True not 3 == 4 # True "a" in s # True s is None # False s.endswith("ma") # True Vizsgálatnál hamis érték ek (a nulla és az üresek): 0; []; (,); ""; {} if while for def class try Vázlatosan: szerkezet eleje: els utasítás második utasítás harmadik utasítás ez már nincs benne Fontos a : és a behúzások. Feltételes elágazás Pythonban Függvények Pythonban from math import sqrt D = b**2-4*a*c if D < 0: print "Nincs valós gyök." elif D == 0: print "Kett s (valós) gyök van." else: print "Két eltér valós gyök van." def masodfoku(a, b, c): D = b**2-4*a*c if D < 0: print "Nincs valós gyök." return elif D == 0: print "Kett s (valós) gyök van." else: print "Két eltér valós gyök van." x1 = -b + sqrt(d) x1 /= 2*a x2 = -b - sqrt(d) x2 /= 2*a return x1, x2

Komplex változat for ciklus Pythonban from future import division from cmath import sqrt def masodfoku(a, b, c): """Másodfokú egyenlet megoldását adja vissza. a, b, c: az egyenlet együtthatói """ sd = sqrt(b**2-4*a*c) x1 = -b + sd x1 /= 2*a x2 = -b - sd x2 /= 2*a return x1, x2 Python példa; fontos a : és a behúzások: szoveg = "alma" for karakter in szoveg: print karakter print karakter.upper() Általános alakja: for <változó> in <listaszer objektum>: <parancsok egyformán behúzva> <parancs, ami már nincs a ciklusban> A listaszer objektum lehet például lista vagy tuple, ekkor az elemeiken megy végig a ciklus, de lehet karakterlánc is, akkor a karakterein. for ciklus Pythonban range Ciklus és számtípusok Gyakran használjuk for-ral a range(n) függvényt. range([start,] stop, [step]) range(5) -> [0, 1, 2, 3, 4] range(2, 5) -> [2, 3, 4] range(2, 8, 3) -> [2, 5] példa for i in [1, 1.03, 1j, 5]: print i, i**100 Eredmény: 1 1 1.03 19.2186319809 1j (1+0j) 5 78886090522101180541172856528278622967320643510902300477027

while ciklus Pythonban while ciklus Pythonban def Euklidesz(a, b): " Visszaadja a legnagyobb közös osztót." if a < b: a, b = b, a while b!= 0: print "%5d %5d" % (a, b) a, b = b, a % b return a lnko = Euklidesz(19*5*5*3*2, 11*7*5*3*2) print "A legnagyobb közös osztó:", lnko Eredmény: 2850 2310 2310 540 540 150 150 90 90 60 60 30 A legnagyobb közös osztó: 30 Lehet máshogy cserélni: a, b = (a,b) if a>b else (b,a) # C-ben: feltétel?igaz-érték:hamis-érték 3-as verzió Saját modulok pi = 3.14 smodul.py Nem teljesen kompatibilis a 2-essel. Pár elavult dolgot helyreraktak. print függvény lett print(a) range iterátort ad lista helyett, ami nem hozza létre az összes számot rögtön: for-ban ugyanúgy, ha lista kell list(range(8)) Küls modulok nem mind léteznek 3-ashoz. Alapból utf-8 kódolás (nem kell megadni). Ékezetes sztringek könnyebb kezelése. Általában python3 utasítással indíthatjuk, ha telepítve van. def negyzet(a): return a*a if name == ' main ': print negyzet(5) modulhivo.py import smodul print smodul.pi print smodul.negyzet(5) from smodul import pi print pi

Almodulok Standard könyvtár A modulok gyakran almodulokat is tartalmazhatnak. Például az os modul path almoduljában vannak az útvonalak összerakásával, szétszedésével kapcsolatos függvények. Példák: import os os.path.join('python', 'nx', 'xx.py') 'python/nx/xx.py' (Un*x), 'python\nx\xx.py' (Windows) from os import path path.join('python', 'nx', 'xx.py') from os.path import join from os.path import * join('python', 'nx', 'xx.py') os: az operációs rendszerrel kapcsolatos dolgokban segít (fájlmásolás, link létrehozása, parancs végrehajtása) sys: a Python m ködésével kapcsolatos modul (elérési útvonal, argumentumok kezelése) urllib: a weboldalak eléréséhez. re: reguláris kifejezések kezeléséhez random: véletlen számok (egyenletes vagy normáis eloszlású véletlen szám, visszatevés nélküli mintavétel listából) thread, threading: szálkezelés xml: XML-el kapcsolatos modul cgi, cgitb: CGI-szkripteléssel kapcsolatos modulok gettext: programok embernyelvi fordításához doctest, unittest: programok embernyelvi fordításához B vebben http://python.org Dokumentation The Python Standard Library Küls modulok Pylab numpy: mátrixm veletek, lineáris egyenletek scipy: széls értékkezelés, numerikus integrálás igraph: gráfok kezelése és kirajzolása, gyors pylab ( matplotlib): a MATLAB-hoz hasonló stílusú számítások, függvényrajzolás (numpy-t használja) NetworkX: gráfok kezelése, kirajzolása matplotlibbel PIL: Python Image Library PyTables: nagy mennyiség hierarchikus adat kezelése Star-P: A numpy párhuzamos rendszerekre írt megfelel je, kereskedelmi from pylab import * x = linspace(-pi, pi, 1024) y = zeros(1024) for i in range(1,16,2): # 1, 3,... 15 y += sin(i*x)/i plot(x,4/pi*y) title(u"négyszögjel Fourier-sora 15 tag") savefig("fourier15.png") show()

NetworkX, packages Adatbázis: DB API 2.0 import packages, pylab, lknegyzetek class DegreeDistribution(): def init (self, graph, direction=none, verbose=true): (...) def errorbar(self, intervals=none): (...) def info(self, file=none): (...) G=packages.get_graph() DD = DegreeDistribution(graph=G) DD.info() DD.info("info.txt") DD.errorbar([(1,100), (101, 20000), (0,100000)]) import pgdb # lehet itt MySQLdb, oracledb... connection = pgdb.connect(database='hp', user='diak',\ password='diak', dsn='mail.roik.bmf.hu') cursor = connection.cursor() # Itt lehet az utasítást megadni: cursor.execute("select * FROM adatok;") # Adatbázis módosításkor kell: connection.commit() eredmeny = cursor.fetchall() for sor in eredmeny: print ", ".join(sor) CGI import cgi import cgitb; cgitb.enable() # A hibafigyeléshez form = cgi.fieldstorage() # CGI-ként a kapott értékek if form.has_key('title'): title = form.getvalue('title') else: title = "CGI-oldal" print "Content-Type: text/html\n" ## CGI print "<html><body>" # és így tovább.