46
Programozási nyelvek Python

Programozási nyelvek - prognyelv1.elte.huprognyelv1.elte.hu/downloads/eloadas/python.pdf · A nyelv története és jellemzői. Bernát Péter: Programozási nyelvek - Python 2017

  • 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