Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
A nyelv története és jellemzői
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 3
Monty Python
Repülő Cirkusza
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.
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 4
Változók és értékadás
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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ó
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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ék1, …, értékn
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 7
Típusok
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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()
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 9
Példa: elemi típusok implicit alakjai
darab = 100 # egész számtávolság = 100.0 # valós szám
a = 3+1.5j # komplex szám
van = False # logikai értéknév = 'Michael Palin' # szöveg
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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'}
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 14
Logikai típus
➢Típusnév és konverziós művelet
➢bool
➢Műveletek
➢and or not
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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
➢== != < <= > >= relációk
➢n=len(s) s hossza
➢t=s[i] s i. karaktere
➢t=s[i:j] s i-től j-1-ig tartó szelete
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 16
Példa: szöveg hossza és szelete
név = 'Borbála'n = len(név) # 7s = név[2] # rs = név[-1] # as = név[3:6] # báls = név[1:-2] # orbás = név[3:] # bálas = név[:3] # Bor
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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é
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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ó
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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) l hossza
➢e=l[i]; l[i]=e l i. eleme
➢m=l[i:j]; l[i:j]=m l i-től j-1-ig tartó szelete
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 22
Példa: lista hossza és szelete
l = ['Eric Idle', 128, 35.4, 'Terry Gilliam']n = len(l) # 4e = l[2] # 35.4e = 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]
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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)
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 24
Lista típus
➢Függvények
➢e=min(l); e=max(l)
➢l legkisebb illetve legnagyobb eleme
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 25
Szótár típus
➢Típusnév és konverziós művelet
➢dict
➢Műveletek➢e=d[k]; d[k]=e d szótár k kulcsú eleme
➢del(d[k]) d szótár k kulcsú elemének törlése
➢k in d tartalmazás-vizsgálat
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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'])
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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()
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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ólsor=sor.rstrip(’\n’)
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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))
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 32
Vezérlési szerkezetek
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 33
Vezérlési szerkezetek –Áttekintés
➢Elágazás
➢Ismétlés➢Feltételes ciklus
➢Bejáró ciklus
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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)
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 35
Elágazás
➢Ha … akkor … különben ha … akkor …
if feltétel1:
utasítás(ok)
elif feltétel2:
utasítás(ok)
elif feltétel3:
utasítás(ok)
…
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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árnifor ciklusváltozó in összetett_adat[i:j]:
utasítás(ok)
➢Ha szükség van az elemek indexeirefor i, cv in enumerate(összetett_adat):
utasítás(ok)
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 39
Kiírás és beolvasás, eljárás és függvény,
modul
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 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ásvá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))
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 41
Eljárás és függvény
➢Eljárás meghatározása Függvény meghatározásadef név(form. param.ek): def név(form. param.ek)
utasítás(ok) utasítás(ok)return 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éter1=érték1, formális paraméter2=érték2,…)
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 42
Modul
➢Modulok létrehozása➢név1.py, név2.py, …
➢Modulok importálásaimport név1, név2, …
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 43
Hasznos linkek
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 44
Hasznos linkek
➢A Python hivatalos oldala➢https://www.python.org/
➢Python-tananyag➢https://www.tutorialspoint.com/python/
2017. 12. 05.Bernát Péter: Programozási nyelvek - Python 45