2016/12/13 11:37 1/17 Python nyelv < Python Python nyelv Szerző: Sallai András Copyright Sallai András, 2011, 2014, 2015 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu Helló Világ elso.py # coding: utf8 print "Helló Világ!" Karakterkódolás Latin2 beállítása: # coding: iso-8859-2 UTF-8 beállítása: # coding: utf8 Az állomány elején kettős-kereszttel bevezetve adjuk meg. Hagyományosan használjuk a -*- karaktereket is: # -*- coding: <encoding name> -*- Interpreter Unix alapú rendszereken a legelső sorban megadhatjuk a python fordító útvonalát: #!/usr/bin/python # -*- coding: utf-8 -*- print("ok") Így különböző python verziók használhatók. A hármas verziót például:
Last update: 2015/06/02 08:22 oktatas:programozás:python:python_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:python:python_nyelv #!/usr/bin/python3 # -*- coding: utf-8 -*- print("ok") Olvashatjuk a környezetből is: #!/usr/bin/env python # -*- coding: utf-8 -*- print("ok") Megjegyzés Egy soros megjegyzéseket tehetünk a kódba a # jel segítségével. # Megjegyzés A megjegyzések állhatnak utasítás után is print("ok") # Megjegyzés if "joska" in nevek: # Megvizsgáljuk benne van-e print("benne van") Kivitel A print utasítás Szöveget írathatunk ki idézőjelek és felső vesszők között is: print "Alma" print 'Alma' A Python 3.x verziótól, csak zárójellel használhatjuk a print() utasítást: print("alma") A print után vesszővel tagolva több paraméter is megadható: a = 3 print "Szám: ", a http://szit.hu/ Printed on 2016/12/13 11:37
2016/12/13 11:37 3/17 Python nyelv sys program01.py #!/usr/bin/python import sys sys.stdout.write("valami\n") Azokat a változókat amelyek szám értékeket tartalmaznak, át kell konvertálni szöveggé: program01.py #!/usr/bin/python3 import sys szam = 35 sys.stdout.write(str(szam)) Összevonás más karaktersorozattal: program01.py #!/usr/bin/python3 import sys szam = 35 sys.stdout.write(str(szam) + " kg") Escape szekvenciák Ha kiíratunk egy a karaktert, akkor a megjelenik a képernyőn. Egyes karaktereket a szokásostól eltérően is értelmezhetünk. Megjelenés helyett valamilyen változást idézhetnek elő. Ha egy karakternek ilyen speciális jelentést szeretnénk adni, azt az elé tett vissza-per jellel jelezzük, és a továbbiakban escape szekvenciának nevezzük. A következő táblázat bemutatja, milyen escape szekvenciák vannak és azokat mire használjuk. Escape szekvencia Jelentés \\ vissza-perjel megjelenítése \' aposztróf megjelenítése \" idézőjel megjelenítése \a ASCII csengőhang \b ASCII visszatörlés - Backspace (BS) \f ASCII lapdobás (FF)
Last update: 2015/06/02 08:22 oktatas:programozás:python:python_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:python:python_nyelv \n ASCII soremelés (LF) \r ASCII kocsi vissza (CR) \t ASCII vízszintes tabulátor (TAB) \v ASCII függőleges tabulátor (VT) \ooo oktális érték \xhh hexadecimális érték Visszatörlés használata: print("alma\bkörte") A fenti utasítás kitörli az alma szó utolsó a betűjét. Soremelés használata: print("alma\nkörte") Tabulátor használata: print("alma\tkörte") ASCII hexadecimális kód alapján kiíratás: print("\45") Változóhasználat A változókat használatuk előtt nem kell deklarálni. Egyszerűen csak használni kell. # coding: iso-8859-2 szam = 3 print "Teszt", szam # coding: iso-8859-2 szam1 = 3 szam2 = 5 osszeg = szam1 + szam2 print "Összeg: ", osszeg # coding: iso-8859-2 szoveg1 = "Szeretem" szoveg2 = " az almát" kiirando = szoveg1 + szoveg2 print "Következtetés: ", kiirando A változók típusa attól függ milyen értéket adunk át számára. Ha egész típust adunk át akkor int lesz. Ha valós típust, akkor float. Ha szöveget akkor str. http://szit.hu/ Printed on 2016/12/13 11:37
2016/12/13 11:37 5/17 Python nyelv Ha szeretnénk tudni milyen típusú a változónk, akkor a type függvényt használhatjuk: print type(szam1) Az eredmény: <type 'int'> Vagy: print type(szoveg1) Az eredmény: <type 'str'> Formázott kivitel Egész szám kiíratása 10 helyen szam = 3 print "Szám: %10d" % szam Ha formázott kivitelt használunk, akkor a formátum karaktersorozat után a szeparátor % jel karakter, a vessző helyett. Valós szám, két tizedesjegy pontossággal, tíz helyen ábrázolva. szam = 3.12345678 print "Szám: %10.2f" % szam Szöveg kiíratása nev = "körte" print "Név: %s" % nev Matematikai modul A matematikai modul használatához, importálnunk kell a math modult. A * karakterrel az math modul összes függvényét importáljuk, de megadhatunk egy vagy több függvényt is vesszővel elválasztva. Gyökvonás és importálás:
Last update: 2015/06/02 08:22 oktatas:programozás:python:python_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:python:python_nyelv import math print math.sqrt(9) Így importálva, mindig elé kell írni a math objektumnevet. Az sqrt statikusan importálva: from math import sqrt print sqrt(9) Vegyük észre hogy fentebb csak az sqrt függvényt importáltuk a math modulból. A következőkben a sqrt() és a sin() függvényt is importáljuk: from math import sqrt,sin print sqrt(9) print sin(1 * pi / 180) Az összes függvény importálása: from math import * print sqrt(9) print sin(1 * pi / 180) Véletlen szám Véletlen szám generálása a randrange függvénnyel lehetséges. Randrange A randrange használatához importálnunk kell a random csomagot: import random Szintaxis: random.randrange([start], stop[, step]) Példák: 0-tól 5-ig számok: print random.randrange(6) Megadható alsó határ is. 10-től 14-ig számok: http://szit.hu/ Printed on 2016/12/13 11:37
2016/12/13 11:37 7/17 Python nyelv print random.randrange(10, 15) iterálva: veletlenek.py #!/usr/bin/env python # -*- coding: utf-8 -*- import random for szam in range(20): print random.randrange(3) A randrange elfogad egy harmadik paramétert is. A random.randrange(3,13,3) a 3, 6, 9, 12 sorozat elemek valamelyikét adja vissza. Randint random.randint(a, b) Visszatér egy egész N számmal, amely a <= N <= b. A randrange(a,b+1) formával azonos. Példa: dobokocka.py import random # 1-től -- 6--ig szám előállítása: print random.randint(1,6) Megjegyzés: Ne adjuk a futtatható állomány nevének a random szót, mert akkor ebből a fájlból akarja importálni a random objektumot. choice seq="abcd" random.choice(seq) print random.choice("abcd") A sorozatból választ egy elemet. A fenti példában tehát a, b, c vagy d -t ad majd vissza.
Last update: 2015/06/02 08:22 oktatas:programozás:python:python_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:python:python_nyelv http://docs.python.org/py3k/library/random.html#random.choice random random.random() Egy 12 darab tizedesjegyből álló lebegőpontos számot generál. Például: 0.00727745707987 Operátorok Aritmetikai operátorok + összeadás - kivonás * szorzás / osztás % maradékképzés ** hatványozás Három a második hatványon: 3**2 Logikai operátorok and és or vagy not tagadás Zárójelek használatával egy lehetséges példa: (A and (not B)) or C Relációs operátorok > < >= <= ==!= http://szit.hu/ Printed on 2016/12/13 11:37
2016/12/13 11:37 9/17 Python nyelv Konvertálás Sztring valóssá a = "123.12345" float(a) Sztring egésszé a = "123.12345" int(float(a)) Bevitel program01.py #!/usr/bin/python3.4 szam = input("szám: ") print szam * 2 Szöveg bekérése: szoveg = raw_input("szöveg: ") Egész szám bekérése: eszam = int(raw_input("egész szám: ") Valós szám bekérése: vszam = float(raw_input("valós szám: ") Két szám bekérése, összeadása: # coding: iso-8859-2 szam1 = int(raw_input('szam1: ')) szam2 = int(raw_input('szam2: ')) eredmeny = szam1 + szam2 print eredmeny
Last update: 2015/06/02 08:22 Szekvencia oktatas:programozás:python:python_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:python:python_nyelv tevékenység1 tevékenység2 A Python nyelvben fontos, hogy az utasításokat nem írhatjuk behúzással indoklás nélkül. Behúzással akkor írhatjuk, hogy az utasítás egy szelekciós, iterációs vagy más blokk részét képezi. Szelekció Általánosan if feltétel: tevékenység Két ágú szelekció általánosan: if feltétel: tevékenység else: tevékenység2 Több ágú szelekció általánosan: if feltétel: tevékenység elif feltétel2: tevékenység2 else: tevékenység3 Példák a = 3 if a > 0: print "Pozitív" elif a < 0: print "Negatív" else print "Nulla" Több utasítás a szelekcióban Azt szeretnénk, ha az a változó kisebb mint nulla akkor írja ki egy utasítás, hogy Negatív szám, majd egy másik utasítás: Nem jó nekünk. A szelekció ezzel véget ér, egy olyan utasítás jön ami már http://szit.hu/ Printed on 2016/12/13 11:37
2016/12/13 11:37 11/17 Python nyelv nem tartozik a szelekcióhoz, amely azt írja ki: Folytatás. Ez utóbb utasítás tehát mindenképpen végre kell hajtódjon. if a < 0: print "Negatív szám" print "Nem jó nekünk" print "Folytatás..." Vegyük észre, hogy nincs blokk nyitó és blokk záró. Hogy a blokk még tart, jelzi a folyamatos beljebb kezdés. Ha a blokkot véget ért, akkor az if utasítással egy vonalban folytatjuk a következőt. A könnyebb érthetőség kedvéért hasonlítsuk össze a következő két programot: a = 5 if a < 0: print "Negatív szám" print "Nem jó nekünk" print "Folytatás..." a = 5 if a < 0: print "Negatív szám" print "Nem jó nekünk" print "Folytatás..." Futtassuk le, és nézzük meg mi a kettő különbsége. Relációs operátorok használata a szelekcióban a = 9 if (a % 2 == 0): print "páros" else: print "páratlan" Iteráció while i = 0 while i < 10: i = i + 1 print i, " Valami" print "Vege"
Last update: 2015/06/02 08:22 oktatas:programozás:python:python_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:python:python_nyelv for lista = ['macska', 'ablak', 'utca'] for b in lista: print b for n in range(1, 40): print "Helló Világ" Intervallum # [0,1,2,3,4,5,6,7,8,9] listát hozzuk létre lista = range(10) for szam in lista: print szam Előállíthatunk 5 és 12 közötti számokat: range(5,13) [5, 6, 7, 8, 9, 10, 11, 12] 3-tól 15-ig, hármasával: range(3,16,3) [3, 6, 9, 12, 15] Lista bejárása bejar.py # Készítünk egy listát: nevsor = ['Jóska','Kati','Mari','János','Gábor'] # Bejárjuk: for index in range(len(nevsor)): print index, nevsor[index] Iterációk A számokat kiíratjuk 0-tól 9-ig http://szit.hu/ Printed on 2016/12/13 11:37
2016/12/13 11:37 13/17 Python nyelv for i in range(10): print i Szövegkezelés Konkatenálás szoveg3 = szoveg1 + szoveg2 Ha bekérjük a szöveget, ne felejtsük el, hogy a szöveg végére egy kocsi vissza karakter is beíródik. Ezért az el kell távolítani: vnev = raw_input("vezetéknév: ") knev = raw_input("keresztnév: ") teljesnev = vnev.rstrip() + knev.rstrip() De létezik lstrip() és strip() metódus is Szöveg hossza: szoveg = "körte" print len(szoveg) Eredmény: 5 Darabolás tomb = szoveg.split() Megadhatjuk a szeparátort: szoveg = "egy:ketto:harom" tomb = szoveg.split(':') Benne van-e? sor = "vi farkas más" if "farkas" in sor: print("ok")
Last update: 2015/06/02 08:22 Tömbök oktatas:programozás:python:python_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:python:python_nyelv Vektor # coding: iso-8859-2 tomb = [] tomb.append(9) tomb.append(4) print "Első elem: ", tomb[0] print "Második elem: ", tomb[1] # coding: iso-8859-2 tomb = [3,5,6,7] print "Első elem: ", tomb[0] print "Második elem: ", tomb[1] Mátrix # coding: iso-8859-2 tomb = [[1,1,1],[1,1,1],[1,1,1]] print tomb[0][0] Méret tomb = [ 3, 4, 9] meret = len(tomb) Időpont lekérdezése #coding: utf-8 import time pillanatok = time.time() print "Eltelt pillanatok 1970 január 1 12:00 óra óta: ", pillanatok helyiido = time.localtime(time.time()) print "Helyi idő: ", helyiido http://szit.hu/ Printed on 2016/12/13 11:37
2016/12/13 11:37 15/17 Python nyelv # Helyi idő formázva: helyiido = time.asctime(time.localtime(time.time())) print "Helyi idő: ", helyiido input() Függvény Függvényt a def szóval hozhatunk létre def Osszead(szam1, szam2): eredmeny = szam1 + szam2 return eredmeny print Osszead(3, 2) Fájlkezelés Szekvenciális fájlkezelés Hozzáfűzés f = open('adat.txt', 'a') f.write('üdv\n') f.close() Olvasás f = open('adat.txt', 'r') sor = f.read() print sor f.close() 5 karakter beolvasása: s = f.read(5)
Last update: 2015/06/02 08:22 oktatas:programozás:python:python_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:python:python_nyelv Szövegfájlok kezelése Írás fájlba olvas.py f = open('adat2.txt', 'w') f.write("első") f.write("második") f.close() Olvasás fájlból olvas.py f = open('adat.txt', 'r') while 1: sor = f.readline() if sor == '': break print sor.rstrip() f.close() Olvasás újabb verzió olvas.py #!/usr/bin/env python # -*- coding: utf-8 -*- with open("adat.txt") as f: for sor in f: print(sor) http://szit.hu/ Printed on 2016/12/13 11:37
2016/12/13 11:37 17/17 Python nyelv Külső könyvtárak használata sys.path.append('/ahol/a/libek/vannak/') From: http://szit.hu/ - SzitWiki Permanent link: http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:python:python_nyelv Last update: 2015/06/02 08:22