Programozási nyelvek Python
A nyelv története és jellemzői 2
A nyelv története Tervező Guido van Rossum (1956, Hollandia) Befolyásoló nyelvek ABC (pl. blokkok jelölése behúzással); Modula-3; C; C++; Unix shell stb. A név eredete Monty Python Repülő Cirkusza Mérföldkövek 0.9.0 1991; 1.0 1994; 2.0 2000; 3.0 2008 Monty Python Repülő Cirkusza 3
A nyelv jellemzői Magas szintű és általános célú programozási nyelv Többelvű: imperatív; funkcionális és objektumorientált Interpretált Interaktív módban is használható Nagybetű kisbetű A kulcsszavak csupa kisbetűsek A blokkok behúzással (azonos darabszámú szóközökkel) jelölhetők ki Az utasításlezáró jel a sor vége A fejlesztői környezet számos platformra elérhető Windows, Linux, Macintosh stb. 4
Változók és értékadás 5
Változók Nem a változónak van típusa, hanem a benne tárolt értéknek következmények: Nincsen változódeklarálás A változóban tárolt érték típusa a program futása során megváltozhat A változóban tárolt érték mérete tetszőleges lehet (a memória mérete szab határt) Konstans nem definiálható 6
Értékadás Egyszerű értékadás változó = érték Többszörös értékadás változó 1,, változó n = érték 1,, érték n 7
Típusok 8
Típusok Áttekintés Elemi típusok implicit alak konverziós művelet Egész szám 0 int() Valós szám 0.0 float() Komplex szám 0.0+0.0j complex() Logikai True/False bool() Összetett típusok implicit alak konverziós művelet Szöveg v. str() Lista (tömb) [ ] list() Szótár (asszoc. tömb){} dict() Halmaz {} set() 9
Példa: elemi típusok implicit alakjai darab = 100 távolság = 100.0 a = 3+1.5j van = False név = 'Michael Palin' # egész szám # valós szám # komplex szám # logikai érték # szöveg 10
Példa: összetett típusok implicit alakjai # lista: l = ['Eric Idle', 128, 35.4, 'Terry Gilliam'] # szótár: autó = {'típus':'bugatti', 'év':1916, 'motorméret':5000} # halmaz: h = {'Eric Idle', 128, 35.4, 'Terry Gilliam'} 11
Egész szám típus Típusnév és konverziós művelet int Műveletek + összeadás kivonás * szorzás / osztás // hányados % maradék ** hatványozás += -= *= /= ==!= < <= > >= érték változtatása relációk 12
Valós szám típus Típusnév és konverziós művelet float Műveletek + összeadás kivonás * szorzás / osztás ** hatványozás += = *= /= ==!= < <= > >= érték változtatása relációk 13
Komplex szám típus Típusnév és konverziós művelet complex Műveletek + összeadás kivonás * szorzás / osztás ** hatványozás += = *= /= ==!= érték változtatása relációk 14
Logikai típus Típusnév és konverziós művelet bool Műveletek and or not 15
Szöveg típus Típusnév és konverziós művelet str Műveletek + összefűzés * sokszorozás += hozzáfűzés ==!= < <= > >= n=len(s) t=s[i] t=s[i:j] relációk s hossza s i. karaktere s i-től j-1-ig tartó szelete 16
Példa: szöveg hossza és szelete név = 'Borbála' n = len(név) # 7 s = név[2] # r s = név[-1] # a s = név[3:6] # bál s = név[1:-2] # orbá s = név[3:] # bála s = név[:3] # Bor 17
Szöveg típus Metódusok n=s.find(t) t első előfordulásának indexe s-ben, vagy -1 n=s.rfind(t) t utolsó előfordulásának indexe s-ben, vagy -1 n=s.count(t) t előfordulásainak száma s-ben t=s.replace(u, v) u-k cseréje v-re s-ben 18
Szöveg típus Metódusok l=s.split(x) s darabolása listává x-ek mentén t=s.strip(x); t=s.lstrip(x); t=s.rstrip(x) a whitespace-ek eltávolítása mindkét irányban vagy csak az egyikben t=s.lower(); t=s.upper() s átalakítása csupa kis- vagy nagybetűssé 19
Példa: szöveg darabolása listává majd elemi adatokká sor = 'Budapest Debrecen 226' adatok = sor.split(' ') # ['Budapest', 'Debrecen', '226'] város1 = adatok[0] város2 = adatok[1] távolság = int(adatok[2]) # típuskonverzió 20
Lista típus Típusnév és konverziós művelet list Műveletek + összefűzés * sokszorozás += hozzáfűzés in tartalmazás-vizsgálat n=len(l) e=l[i]; l[i]=e m=l[i:j]; l[i:j]=m l hossza l i. eleme l i-től j-1-ig tartó szelete 21
Példa: listák létrehozása l = ['Eric Idle', 128, 35.4, 'Terry Gilliam'] üres_l = [] egyesített_l = [1, 2, 3] + ['A', 'B', 'C'] sokelemű_l = [0] * 10 22
Példa: lista hossza és szelete l = ['Eric Idle', 128, 35.4, 'Terry Gilliam'] n = len(l) # 4 e = l[2] # 35.4 e = l[-1] # 'Terry Gilliam' m = l[0:2] # ['Eric Idle', 128, 35.4] m = l[1:-2] # [128] m = l[2:] # [35.4, 'Terry Gilliam'] m = l[:2] # ['Eric Idle', 128] 23
Lista típus Metódusok l.append(e) e hozzáfűzése a listához l.insert(e, i) e beszúrása az i. helyre e=l.pop(i) az i. (vagy paraméter nélkül az utolsó) elem eltávolítása és visszaadása l.remove(e) e első előfordulásának eltávolítása a listából n=l.index(e) e első előfordulásának indexe, vagy -1 l.reverse(); l.sort() a lista megfordítása vagy rendezése (a reverse=true paraméterrel csökkenően) 24
Lista típus Függvények e=min(l); e=max(l) l legkisebb illetve legnagyobb eleme 25
Szótár típus Típusnév és konverziós művelet dict Műveletek e=d[k]; d[k]=e del(d[k]) k in d d szótár k kulcsú eleme d szótár k kulcsú elemének törlése tartalmazás-vizsgálat 26
Példa: szótár típus #szótár létrehozása: autó = {'típus':'bugatti', 'év':1916, 'motorméret':5000} #szótár adott kulcsú értéke (olvasásra vagy írásra): év = autó['év']; autó['év'] = 1932 #új kulcs és érték hozzáadása: autó['szín'] = 'pisztácia' #kulcs és érték törlése: del(autó['szín']) 27
Példa: szótárak listája #üres lista létrehozása: autók = [] #szótárak hozzáfűzése a listához: autó = {'típus':'bugatti', 'év':1916, 'motorméret':5000} autók.append(autó) autó = {'típus':'toyota', 'év':2006, 'motorméret':3956} autók.append(autó) #lista adott indexű elemének adott kulcsú értéke: x = autók[0]['motorméret'] # 5000 28
Halmaz típus Típusnév és konverziós művelet set Műveletek unió & metszet különbség ^ szimmetrikus diff. = &= = ^= halmaz változtatása ==!= < <= > >= relációk in tartalmazás-vizsgálat n=len(h) h elemszáma Metódusok h.add(e); h.discard(e) e elem hozzáadása/elvétele 29
Szöveges fájl Fájl megnyitása olvasásra f=open(név, r ) Fájl megnyitása írásra f=open(név, w ) Fájl megnyitása hozzáfűzésre f=open(név, a ) Fájl bezárása f.close() 30
Szöveges fájl Fájl beolvasása szövegként (sorvége jelekkel) s=f.read() Fájl beolvasása listába (1 elem = 1 sor; sorvége jelek nélkül) l=f.read().splitlines() Fájl olvasása soronként (sorvége jelekkel) for sor in f: utasítások Sorvége jel eltávolítása sorból sor=sor.rstrip( \n ) 31
Szöveges fájl Fájlba írás (szükséges esetben sorvége jellel) f.write(s) Lista fájlba írása (1 elem = 1 sor) f.write( \n.join(l)) 32
Vezérlési szerkezetek 33
Elágazás Ismétlés Feltételes ciklus Bejáró ciklus Vezérlési szerkezetek Áttekintés 34
Elágazás Ha akkor if feltétel: utasítás(ok) Ha akkor különben if feltétel: utasítás(ok) else: utasítás(ok) 35
Elágazás Ha akkor különben ha akkor if feltétel 1 : utasítás(ok) elif feltétel 2 : utasítás(ok) elif feltétel 3 : utasítás(ok) 36
Feltételes ciklus Feltételes ciklus while bentmaradási_feltétel: utasítás(ok) Vezérlésátadás a feltételes ciklusban continue visszatérés a ciklus elejére break kilépés a ciklusból 37
Bejáró ciklus Bejárhatók az összetett típusú adatok (szöveg, lista, szótár, halmaz) Bejáró ciklus (alapeset) for ciklusváltozó in összetett_adat: utasítás(ok) Ha csak a lista egy intervallumát kell bejárni for ciklusváltozó in összetett_adat[i:j]: utasítás(ok) Ha szükség van az elemek indexeire for i, cv in enumerate(összetett_adat): utasítás(ok) 38
Bejáró ciklus Vezérlésátadás a bejáró ciklusban continue visszatérés a ciklus elejére break kilépés a ciklusból 39
Kiírás és beolvasás, eljárás és függvény, modul 40
Kiírás és beolvasás Kiírás (a kifejezések között szóközökkel, a végén új sorba ugrással) print(kifejezések) Kiírás (a kifejezések között szóközök nélkül) print(kifejezések, sep= ) Kiírás (a végén új sorba ugrás nélkül) print(kifejezések, end= ) Beolvasás változó=input(kifejezés) Beolvasás és konvertálás (pl. egész v. valós számmá) változó=konv_műv(input(kifejezés)) 41
Eljárás és függvény Eljárás meghatározása def név(form. param.ek): utasítás(ok) return Függvény meghatározása def név(form. param.ek) utasítás(ok) return kifejezés Formális paraméter alapértelmezett érték nélkül vagy vele változó változó=alapértelmezett_érték Eljárás vagy függvény hívása az összes paraméter megadásával vagy néhánnyal (és más sorrendben) név(összes érték) név(formális paraméter 1 =érték 1, formális paraméter 2 =érték 2, ) 42
Modul Modulok létrehozása név 1.py, név 2.py, Modulok importálása import név 1, név 2, 43
Hasznos linkek 44
Hasznos linkek A Python hivatalos oldala https://www.python.org/ Python-tananyag https://www.tutorialspoint.com/python/ 45
Előadás vége