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

A Python programozási nyelv

Gyakorló feladatok Gyakorló feladatok

A Python programozási nyelv

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

Programozási nyelvek Python

Imperatív programozás

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

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

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

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

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

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

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

Python I. Vincze Dávid Miskolci Egyetem, IIT

PYTHON. Avagy hosszú az út a BioPythonig

1. Alapok. #!/bin/bash

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

Szkriptnyelvek. 1. UNIX shell

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

Komputeralgebra Rendszerek

Operációs rendszerek gyakorlat

2. modul Python bevezetés

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

A C# programozási nyelv alapjai

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

Matematikai programok

Szoftvertechnológia alapjai Java előadások

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

Bevezetés a Python programozási nyelvbe

Programozás alapjai. 5. előadá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:

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

2016, Diszkrét matematika

Térinformatikai programozás Pythonban

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

Imperatív programozás

Függvények Függvények

2018, Funkcionális programozás

2016, Funkcionális programozás

2018, Diszkrét matematika

Informatika terméktervezőknek

BME MOGI Gépészeti informatika 4.

2015, Diszkrét matematika

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

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

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

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

2018, Diszkrét matematika

2018, Diszkrét matematika

Bevezetés a programozásba I.

2016, Diszkrét matematika

1. Jelölje meg az összes igaz állítást a következők közül!

2018, Diszkre t matematika. 8. elo ada s

Matematikai programok

2018, Diszkre t matematika. 10. elo ada s

A félév során előkerülő témakörök

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

Bevezetés a programozásba I.

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

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

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

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

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

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

Bevezetés a Python használatába

Objektumorientált Programozás III.

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

Adatbázis-kezelés ODBC driverrel

Webprogramozás szakkör

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

Java és web programozás

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

Programozási nyelvek JAVA EA+GY 1. gyakolat

2016, Diszkrét matematika

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Apple Swift kurzus 3. gyakorlat

2018, Diszkrét matematika

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

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

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

Példatár a bevezetés a Matlab programozásába tárgyhoz

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

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

A C# PROGRAMOZÁSI NYELV

OOP: Java 4.Gy: Java osztályok

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

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

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

A JavaScript főbb tulajdonságai

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

A C programozási nyelv I. Bevezetés

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

A C programozási nyelv I. Bevezetés

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

Átírás:

Mi a Python? A Python alapjainak áttekintése Általános célú programnyelv rengeteg beépített és egyéb modullal. 2016. február 29. Dinamikusan típusos (egyszer egész másszor lista) Objektumorientált (adattípusoknak saját függvényei lehetnek) Platformfüggetlen bytekódot készít Könnyen beágyazhatóak C és Fortran programok (Pylab) 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)) / 2*a x2 = (-b - sqrt(d)) / 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 (str, sztring) 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: split, splitlines, upper, center, rjusti, format... (cmath modul) M veletek: + M veletek +, -, *, /, ** (hatvány) M veletek egészeknél % (mod), //, bitenkénti m veletek 'AREK '*3 # AREK AREK AREK

Karakterláncok format metódusa (haladó) Listák (list) '{0}+{1}+{0}'.format(5, 125) # 5+125+5 '{}-{}'.format(20, 125457) # 20-125457 '{darab} db {aru}: {ar} Ft'.format( aru='kapa', darab=7, ar=1200) # 7 db kapa: 1200 Ft Bármilyen típusú lehetnek l = [1, 'alma', 2+3j, [5, 4]] Módosíthatjuk: hozzáf zhetünk, beszúrhatunk és törölhetünk bel le elemeket Metódusai: append, insert, count, pop... Példák: lista = ['alma', 'egres', 'alma', 'barack'] lista.append('dió') lista.count('alma') # 2 Rendezett sorozatok (tuple) Sorozattípusok közös jellemz i 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ó. Sorozattípusok: karakterlánc, lista, tuple... Ezeknél m ködik az indexelés és szeletelés. 0. elemmel kezdünk. (ahogy C-ben, de MATLAB-ban 1-t l) s = 'Szelet' Példák: s[0], s[2:4], s[:3] = s[0:3], s[-2:] = s[-2:6], s[2:-2] A fels határ nincs bent sohasem: 2:5 = 2, 3, 4. Használható a len() (hossz) függvény rájuk. len('szelet') == 6 Használható a max() és min() függvény rájuk, számoknál sum() Benne van-e elem: 1 in (1,4,2) # True

Függvények és hívásuk Szótárak (dict) (haladó) Függvények jellemz i: argumentumaik lehetnek (zárójelben felsorolva, vessz vel elválasztva) csinálhatnak valamit (print kiír képerny re) visszatérnek valamilyen értékkel (esetleg None-nal) Függvények hívása: kulcsszavas argumentumok (többi után) print(1, 3, 'alma', sep=':', end='\n\n') alapértelmezett értékek (sep=' ', end='\n'), ha nem adom meg, azt használja Egy kulcs azonosít egy elemet. Példák: d = { 1: 'alma', (18.4, 47.2): 'Fehérvár', 'alak': 'téglalap' } print(d['alak']) # téglalap print(d.keys()) # [1, (18.4, 47.2), 'alak'] d[1j] = 'komplex' # Új elem beillesztése for key in d: print(key, d[key]) Csak nem-módosítható elem lehet kulcs. Logikai (bool) Adattípusok egymásba alakítása Értéke lehet True és False. Vizsgálatnál hamis érték ek (a nullák és az üresek): 0 0.0 0+0j [] () '' {} 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 isinstance(s, str) # True int(5.2) # csonkol int('2013') float(3) # 3.0 == 3. float('3.14') int('3.14') # hibás bool(0) # False tuple([1, 3, 5]) 2.5*array([1,5,3]) # numpy (pylab) sorvektorrá

Adattípusok összefoglalása A Python vezérlési szerkezetei megváltoztatható (mutable) list set dict nem az (immutable) int,oat,complex str tuple frozenset bool A jobboldaliak lehetnek szótárak indexei. 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)) / 2*a x2 = (-b - sqrt(d)) / 2*a return x1, x2

for ciklus Pythonban for ciklus Pythonban range 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 <sorozat>: <parancsok egyformán behúzva> <parancs, ami már nincs a ciklusban> Gyakran használjuk for-ral a range(n) függvényt. range([start,] stop[, step]) Listává alakítva: range(5) ==> [0, 1, 2, 3, 4] range(2, 5) ==> [2, 3, 4] range(2, 8, 3) ==> [2, 5] A sorozat lehet például lista vagy tuple, ekkor az elemeiken megy végig a ciklus, de lehet karakterlánc is, akkor a karakterein. Ciklus és számtípusok Listaértelmezés 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 7888609052210118054117285652827862296732064351090230047702789306640625 [2**i for i in range(1, 6)] # --> [2, 4, 8, 16, 32] word_list = ["alma", "körte", "banán"] [word.upper() for word in word_list] # --> ["ALMA", "KÖRTE", "BANÁN"] [ (i, j) for i in range(7) for j in range(2, i) if i + j < 8 ] # --> [(3, 2), (4, 2), (4, 3), (5, 2)]

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('{0:5} {1:5}'.format(a, b)) a, b = b, a % b return a Eredmény: 2850 2310 2310 540 540 150 150 90 90 60 60 30 A legnagyobb közös osztó: 30 lnko = Euklidesz(19*5*5*3*2, 11*7*5*3*2) print("a legnagyobb közös osztó:", lnko) # --> 5*3*2 = 30 Python 3-as verzió Saját modulok (haladó) Nem teljesen kompatibilis a 2-essel. Pár elavult dolgot helyreraktak. Függvény lett a print: print(1, 'alma', sep=':', le=f) range nem hoz létre listát. for-ban ugyanúgy használható, ha lista kell list(range(10000)) Küls modulok nem mind léteznek még 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. Pár dolog python2 újabb változataiban is használható: from future import division # 1/2 = 0.5 from future import print_function pi = 3.14 def negyzet(a): return a*a if name == ' main ': print(negyzet(5)) smodul.py Hogyan használhatom modulként? Mi fut le importáláskor? Figyeljük meg, hány aláhúzás van?

Saját modulok (haladó) Almodulok pi = 3.14 def negyzet(a): return a*a if name == ' main ': print(negyzet(5)) smodul.py modulhivo.py import smodul print(smodul.pi) print(smodul.negyzet(5)) from smodul import pi print(pi) 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') Standard könyvtár Küls modulok B vebben http://docs.python.org The Python Standard Library 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) subprocess: alfolyamatok kezelése xml: XML-el kapcsolatos modul cgi, cgitb: CGI-szkripteléssel kapcsolatos modulok gettext: programok embernyelvi fordításához (en, hu, de) unittest, doctest: programok teszteléséhez numpy: mátrixm veletek, lineáris egyenletek pylab ( matplotlib): a MATLAB-hoz hasonló stílusú számítások, függvényrajzolás, numpy-t használja scipy: széls értékkezelés, numerikus integrálás igraph: gráfok kezelése és kirajzolása, gyors, kirajzoláshoz nem kell matplotlib cxnet: az igraphra épül gráfelemz NetworkX: gráfok kezelése, kirajzolása matplotlibbel django: web-keretrendszer Pillow: Python Image Library utóda, képek feldolgozása, adataik kinyerése pandas: adatanalízis

Pylab Adatbázis: DB API 2.0 (haladó) from pylab import * x = linspace(-pi, pi, 1024) y = 0 for i in range(1,16,2): # 1, 3,... 15 y += sin(i*x)/i plot(x,4/pi*y) title('négyszögjel Fourier-sora 15 tag') savefig('fourier15.png') show() import pgdb # lehet itt MySQLdb, oracledb... connection = pgdb.connect(database='hp', user='diak', password='diak', dsn='db.arek.uni-obuda.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() print(*eredmeny, sep=", ") CGI (haladó) django 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" Az SQL-utasításokat és a CGI-t kiválthatjuk a django web-keretrendszerrel. http://djangoproject.com print "Content-Type: text/html\n" ## CGI print "<html><body>" # és így tovább.

Django Django web-keretrendszer Webserver Apache fejlesztésnél saját Adatbázis PostgreSQL fejlesztésénél SQLight