You are on page 1of 2

©2012-2018 - Laurent Pointal Mémento v2.0.

7 Legutolsó verzió elérhetősége :


Creative Commons Attribution Licenc 4 Python 3 Puska https://perso.limsi.fr/pointal/python:memento
egész,lebegőpontos,logikai,sztring,bájtok Alaptípusok ◾ sorozatok, gyors hozzáférés index alapján, értékek ismétlődhetnek Konténer típusok
int 783 0 -192 0b010 0o642 0xF3 list [1,5,9] ["x",11,8.9] ["szó"] []
zéró bináris oktális hexa- tuple (1,5,9) 11,"y",7.4 ("szó",) ()
float 9.23 0.0 -1.7e-6 dec.
-6 Értékek nem módosíthatók (immutables) ☝ kifejezés mindössze veszőkkel elválasztva →tuple
bool True False ×10
str bytes (karakterek / bájtok sorozata) ""
str "Egy\nKettő" Többsoros sztring: b""
"""X\tY\tZ ◾ kulcs alapú konténerek, sorrend nem számít, gyors hozzáférés kulccsal, kulcs egyedi
sztringben új sor
'I\'m' 1\t2\t3""" szótár dict {"kulcs":"érték"} dict(a=3,b=4,k="v") {}
sztringben aposztróf sztringben tabulátor (kulcs/érték párok) {1:"egy",3:"három",2:"kettő",3.14:"π"}
bytes b"toto\xfe\775" ☝ nem módosíthatók halmaz set {"kulcs1","kulcs2"} {1,9,3,0} set()
hexadecimális oktális (immutables) ☝ kulcsok=hash-elhető értékek (alaptípusok, immutables…) frozenset immutable halmaz üres

változó, függvény, modul, Azonosítók Konverziók


osztály... elnevezések int("15") → 15 type(kifejezés)
int("3f",16) → 63 második paraméterben megadható a számrendszer bázisa
a…zA…Z_ majd a…zA…Z_0…9
◽ ékezetek bár lehetségesek, de kerülendők int(15.56) → 15 törtrész törlése
◽ a nyelv kulcsszavai nem használhatók float("-11.24e8") → -1124000000.0
◽ kis/NAGY betűre érzékeny (alma != Alma) round(15.56,1)→ 15.6 kerekítés 1 tizedes jegyre (0 érték → egész szám)
☺ a toto x7 y_max BigOne bool(x) False ha x zéró, x tartalma üres, x None vagy False; True más x értékre
☹ 8y and for str(x)→ "…" megjelenítési sztring az x értékre (formázott, olvashatóbb, mint a repr fv)
chr(64)→'@' ord('@')→64 kód ↔ karakter
= Változó értékadás
☝ értékadás ⇔ összerendelése névnek értékkel
repr(x)→ "…" x érték tényleges karakteres formáját adja vissza
1) kiértékelése a jobb odalon lévő kifejezésnek bytes([72,9,64]) → b'H\t@'
2) értékadás a bal oldalon szereplő nevekhez list("abc") → ['a','b','c']
x=1.2+8+sin(y) dict([(3,"három"),(1,"egy")]) → {1:'egy',3:'három'}
a=b=c=0 értékadás egyetlen értékkel több névhez set(["egy","kettő"]) → {'egy','kettő'}
y,z,r=9.2,-7.6,0 többszörös értékadás elválasztó str és str elemek sorozata → összekonkatenált str
a,b=b,a 2 változó értékeinek felcserélése ':'.join(['toto','12','jelszó']) → 'toto:12:jelszó'
a,*b=seq sorozat kicsomagolása str megvágva whitespace karaktereken → str list
*a,b=seq értékbe és listába "szavak szóközökkel".split() → ['szavak','szóközökkel']
és str elválasztva str karakteren → str list
x+=3 változó értékének növelése ⇔ x=x+3 *=
x-=2 változó érték csökkentése ⇔ x=x-2 /= "1,4,8,2".split(",") → ['1','4','8','2']
x=None « nem definiált » konstans érték %= sorozata adott típusnak → más típust tartalmazó list opcionális szűrőfeltétellel
del x változó eltávolítása … [int(x) for x in ('1','29','-3') if int(x) > 0 ] → [1,29]

listák, tuplék, sztringek és bájtok… Sorozat konténerek indexálása


negatív index -5 -4 -3 -2 -1 Elemek száma Hozzáférés adott elemhez lst[index]
pozitív index 0 1 2 3 4 len(lst)→5 lst[0]→10 ⇒ első elem lst[1]→20
lst=[10, 20, 30, 40, 50] lst[-1]→50 ⇒ utolsó elem lst[-2]→40
pozitív szelet 0 1 2 3 4 5 ☝ index 0 -tól indul
Módosítható sorozatokon (list), elem
negatív szelet -5 -4 -3 -2 -1 (itt 0 -tól 4 -ig)
eltávolítása del lst[3] és módosítása
Hozzáférés sorozat részéhez lst[kezdő szelet:vége szelet:lépés] értékadással lst[4]=25
lst[:-1]→[10,20,30,40] lst[::-1]→[50,40,30,20,10] lst[1:3]→[20,30] lst[:3]→[10,20,30]
lst[1:-1]→[20,30,40] lst[::-2]→[50,30,10] lst[-3:-1]→[30,40] lst[3:]→[40,50]
lst[::2]→[10,30,50] lst[:]→[10,20,30,40,50] sekély klónozása (shallow copy) sorozatoknak
Hiányzó szelet megadás → kezdettől végig.
Módostható sorozatokon (list), eltávolítás del lst[3:5] és módosítás értékadással lst[1:4]=[15,25]

Boole logika Blokk utasítások Modulok/nevek importja


module truc⇔fájl truc.py
Összehasonlítások: < > <= >= == != from monmod import nom1,nom2 as fct
(logikai eredmények) ≤ ≥ = ≠ szülő utasítás: →direkt elérés nevekhez, átnevezéshez as
a and b és logika mindkettő utasítás blokk #1… import monmod →hozzáférés monmod.nom1 …
egyszerre ⁝ ☝ modulok és packagek keresése python path-on (ld sys.path)
indentáció !

a or b vagy logika egyik, másik szülő utasítás:


vagy mindkettő utasítás blokk végrehajtása csak Feltételes utasítások
utasítás blokk #2…
☝ buktató : and és or visszaadja a vagy b ⁝ ha a feltétel igaz
igeni nem igen
változók egyikének értékét, akkor is ha azok
nem logikai értékeket tartalmaznak
if logikai feltétel: ? ?
nem
not a logikai nem
következő utasítás blokk #1 után utasítás blokk
Kombinálható több elif feltétellel, de csak
True ☝ identációnak ajánlott 4 darab szóközt egyetlen végső else feltételt tartalmazhat.
igaz és hamis konstansok if kor<=18:
False (tabulátor helyett)használni Csak az első igaz feltétel blokkja hajtódik alp="Gyermek"
végre. elif kor>65:
☝ lebegőpontos számok… közelítő értékek ☝ szögek radiánban Matematika ☝ x változó esetén : alp="Nyugdíjas"
from math import sin,pi… if bool(x)==True: ⇔ if x: else:
Műveletek : + - * / // % ** alp="Aktív"
× ÷ ab sin(pi/4)→0.707… if bool(x)==False: ⇔ if not x:
Prioritás (…) cos(2*pi/3)→-0.4999…
egész ÷ maradék ÷ sqrt(81)→9.0 Hiba kivételek
√ Hiba kiváltás / dobás :
@ → mátrix × python3.5+numpy log(e**2)→2.0 raise ExcClass(…)
ceil(12.5)→13 hiba
(1+5.3)*2→12.6 Hiba feldolgozás : normál feldogozás
floor(12.5)→12 try: raise X() hiba
abs(-3.2)→3.2 from random import randrange raise
normál utasítások blokkja utasítások feldogozás
round(3.57,1)→3.6 randrange(kezdete,vége[,lépés])
pow(4,3)→64.0 modulok math, statistics, random, except ExcClass as e: ☝ finally blokk használható végső
☝ szokásos sorrendje a műveleteknek decimal, fractions, numpy, stb. hiba feldolgozó blokk utasítás blokknak – mindig lefut
☝ óvakodj a végtelen ciklusoktól! utasítás blokk (ciklusé) végrehajtódik Feltételes ciklus utasítás utasítás blokk (ciklusé) végrehajtódik Iteratív ciklus utasítás
amíg a feltétel igaz minden elemére a konténernek vagy iterátornak
igen következő
while logikai feltétel: ? Ciklus vezérlés for var in sorozat: …
nem vége
utasítás blokk break azonnali kilépés utasítás blokk
continue következő iteráció
s = 0 inicializálás a ciklus előtt ☝ else utasítás blokk Végiglépkedés sorozat értékein
i = 1 feltétel legalább a fenti változók egyikével (itt i) normális ciklus kilépéskor
s = "Eme lelet" inicializálás a ciklus előtt
cpt = 0
Algoritmus : i=100

☝ jó tanács : ne módosítsd a ciklus változót


while i <= 100: ciklus változó, a tényleges értékadást a for utasítás végzi
s = s + i**2 ☝ feltétel/ciklus változót módosítani kell, 2 for c in s:
i = i + 1 különben végtelen ciklus iterációt kapunk!
s= i ∑
if c == "e": Algoritmus : megszám-
print("szumma:",s) i=1 cpt = cpt + 1 lálja az e karakter elő-
print("talált",cpt,"'e'") fordulását a sztringben.
print("v=",3,"cm :",x,",",y+4) Megjelenítés ciklus szótáron/halmazon ⇔ ciklus a kulcsok sorozatán
használj szeleteket a ciklusban, hogy alsorozatokon menj végig

megjelenítendő elemek : literál értékek, változók, kifejezések Végiglépkedés konténer sorozat indexein
print opciói: ◽ elem módosítása pozíción
◽ sep=" " elválasztó karakter elemek között, alapból szóköz ◽ elemek elérése pozíción (előtte/utána)
◽ end="\n" sor lezáró karakter, alapból sorvége lst = [11,18,9,12,23,4,17] Algoritmus: limitálja a
torolt = [] 15-nél nagyobb értékeket
◽ file=sys.stdout kiiratás fájlba, alapból standard kimenetre for idx in range(len(lst)): egy listában, eltárolva az
Bemenet ertek = lst[idx] elveszett értékeket egy új
s = input("Utasítások:") if ertek > 15: listában.
☝ input mindig egy sztring-et ad vissza, konvertálandó a kívánt típusra torolt.append(ertek)
lst[idx] = 15
(lásd Konverziók rész a másik odalon). print("módosított:",lst,"-elvesztett:",elvesztett)
len(c)→ elemek száma Generikus műveletek konténereken Végiglépkedés sorozat indexein és értékein egyszerre
min(c) max(c) sum(c) Megj.: Szótárakon és halmazokon ezek for idx,ertek in enumerate(lst):
sorted(c)→ list rendezett másolat a műveletek a kulcsokat használják.
ertek in c → logikai, tartalmazza teszt in (nem tartalmazza not in) range([kezdete,] vége [,lépés]) Egész sorozatok
enumerate(c)→ iterátor (index, érték) ☝ kezdete alapból 0, vége nincs benne a sorozatban, lépés előjeles és alapból 1
zip(c1,c2…)→ iterátor tuplékon amelyek ci értékeit tartalmazzák egyazon indexen
range(5)→ 0 1 2 3 4 range(2,12,3)→ 2 5 8 11
all(c)→ True ha minden eleme c-nek igaz-ra értékelődik, különben False range(3,8)→ 3 4 5 6 7 range(20,5,-5)→ 20 15 10
any(c)→ True ha legalább egy eleme c-nek igaz-ra értékelődik, különben False range(len(sorozat))→ sorozat sorozatot alkotó index-ek sorozata
c.clear()törli az értékeit a szótáraknak, halmazoknak, listáknak ☝ range nem módosítható sorozatot tartalmaz meghatározott egész számokból
Specifikus rendezett sorozatokhoz (listák, tuplék, sztringek, bájtok…)
reversed(c)→ inverz iteráció c*5→ multiplikáció c+c2→ konkatenáció függvény neve (azonosító) Függvény definíció
c.index(ertek)→ pozíció c.count(ertek)→ előfordulások száma paraméter nevek
import copy
copy.copy(c)→ sekély másolata (shallow copy) a konténernek def fv(x,y,z): fv
copy.deepcopy(c)→ mély másolata (deep copy) a konténernek """dokumentáció"""
# utasítás blokk, eredmény számítás, stb.
☝ eredeti lista módosul Műveletek listákon return res eredmény értéke a hívásnak, ha nem szere-
lst.append(ertek) ertek elem hozzáadása a végéhez pel return None hajtódik végre
lst.extend(sorozat) elemek sorozat hozzáadása a végéhez ☝ a paraméterei és az összes
lst.insert(idx,ertek) ertek elem beszúrása idx pozíción változója a blokknak csak a blokkon belül létezik és csak a függvény hívás
lst.remove(ertek) eltávolítása az ertek elem első előfordulásának időtartama alatt (« fekete doboz »)
lst.pop([idx])→érték eltáv. & lekérése elemnek idx pozíción (alapból utolsót) Haladó : def fv(x,y,z,*args,a=3,b=5,**kwargs):
lst.sort() lst.reverse() rendezés / inverzió helyben *args változó poziciójú/számú argumentumok (→tuple), alapértékkel
rendelkezők, **kwargs változó elnevezésű argumentumok (→dict)
Műveletek szótárakon Műveletek halmazokon
Műveletek : r = fv(3,i+2,2*i) Függvény hívás
d[kulcs]=érték del d[kulcs] tárolása/használata egy argumentum érték
d[kulcs]→ érték | → unió a visszatérési értéknek paraméterenként
& → (közös)metszet
d.update(d2) módosít / hozzáad - ^ → különbség/szimmetrikus kül. ☝ a függvény hívásához a
összerendeléseket Haladó: fv() fv
d.keys() < <= > >= → belefoglalás relációk nevét kell megadni, *sorozat
d.values() → iteráció kulcsokon, Fenti műveletek szintén léteznek halmaz zárójelek között pedig a **szótár
d.items() értékeken és párokon függvényekként is. paramétereket, ha léteznek
d.pop(kulcs[,alapérték])→ érték
d.popitem()→ (kulcs,érték) s.update(s2) s.copy() s.startswith(prefix[,kezdete[,vége]]) Sztring műveletek
d.get(kulcs[,alapérték])→ érték s.add(kulcs) s.remove(kulcs) s.endswith(suffix[,kezdete[,vége]]) s.strip([karakterek])
d.setdefault(kulcs[,alapért])→érték s.discard(kulcs) s.pop() s.count(sub[,kezdete[,vége]]) s.partition(elv)→ (előtte,elv,utána)
s.index(sub[,kezdete[,vége]]) s.find(sub[,kezdete[,vége]])
adatok tárolása szekvenciális módon és azok visszaolvasása Fájlok s.is…() különböző sztring tesztek (pl. s.isalpha())
s.upper() s.lower() s.title() s.swapcase()
f = open("fic.txt","w",encoding="utf8") s.casefold() s.capitalize() s.center([szél,str])
változó fájlnév megnyitási mód karakter kódolás s.ljust([szél,str]) s.rjust([szél,str]) s.zfill([szélesség])
fájl változó továb-(+path…) ◽ 'r' olvasás (read) szöveg fájlokhoz: s.encode(kódólás) s.split([elválasztó]) s.join(sorozat)
bi műveletekhez ◽ 'w' írás (write) utf8 ascii
◽ 'a' bővítés (append) latin1 … formázó direktívák értékek a formázáshoz Formázás
ld. modulok os, os.path és pathlib ◽ …'+' 'x' 'b' 't'
"modell{} {} {}".format(x,y,r) str
írás ☝ üres sztringet olvas be a fájl végén olvasás
f.read([n]) → következő karakterek "{szelekció:formázás!konverzió}"
f.write("kakukk") if nincs n megadva, a fájl végéig olvas ! ◽ Szelekció :
f.writelines(sorok listája) f.readlines([n]) → következő sorok listája "{:+2.3f}".format(45.72793)
2 →'+45.728'
f.readline() → következő sor
Példák

név "{1:>10s}".format(8,"toto")
☝ szöveges mód t alapból (olvas/ír str), bináris mód b 0.név →' toto'
lehetséges (olvast/ír bytes). Konvertálj a megfelelő típusra ! 4[kulcs] "{x!r}".format(x="L'ame")
0[2] →'"L\'ame"'
f.close() ☝ ne felejtsd lezárni a fájlt használat után ! ◽ Formázás :
f.flush() cache kiiratása/ürítése f.truncate([taille]) újraméretezés kitölt.kar. igazítás előjel min.szél..pontosság~max.szél. típus
olvasás/írás szekvenciális módon történik a fálba, de az aktuális pozíció módosítható
<>^= + - szóköz 0 kezdetben töltse fel 0 értékekkel
f.tell()→pozíció f.seek(posíció[,eredeti]) egész : b bináris, c karakter, d decimal (alapérték), o oktális, x vagy X hexa
Nagyon gyakori : szöveg fájl megnyitás kontrollált with open(…) as f: lebegőp. : e vagy E exponenciális, f vagy F fixpontos, g vagy G megfelelően
blokkal (automatikus fájl lezárással) és beolvasása a for sor in f : sztring : s … (alapérték), % százalék
soroknak ciklusban. # sor feldolgozása ◽ Konverzió : s (olvasható szöveg) vagy r (szószerinti reprezentáció)

You might also like