Tartalom: Python bevezetés, Python 2 vs Python 3, IDE, egyszerű matematika, változók, szintaxis, és logika, ciklusok I., string I.
A Python egy népszerű, általános célú, magas szintű szkript nyelv, melyet Guido van Rossum holland programozó publikált 1991-ben. A Python keresztplatformos nyelv, futtatókörnyezete több operációs rendszeren (Windows, Linux, OsX, Android) elérhető. A népszerűségéhez nagyban hozzájárul számos kiegészítőcsomagja, mint a később tárgyalandó numpy, matplotlib, TensorFlow, pyQT, openCV, iPython, stb.
A Pythont tanuláshoz és egyszerűbb esetekben használhatjuk interaktívan is, az értelmezővel soronként végrehajttathatjuk az utasításainkat. Persze lehetőségünk van .py
kiterjesztésű fájlokat készíteni és futtatni is, sőt lehet generálni futtatható fájlt vagy telepítőt. Egyelőre viszont maradjunk az alapoknál, ismerkedjünk a szintaktikával és az egyszerű matematikával.
Megjegyzés: az előadások során a Jupyter notebookot fogjuk használni ez interaktív python notebook (.ipynb
) fájlokat hoz létre, amiben a kódok és kimenetek szerkeszthetőek, illetve GitHub-on a legutolsó futás lesz látható. A gyakorlati .py
kiterjesztésű fájlokhoz a Jupyter notebook nem fog kelleni, ez csak a demonstrációt könnyíti meg.
Kedvcsinálóként nézzünk meg egy rövid videót, ahogy hogyan használhatjuk a VS code könnyűsúlyú kódszerkesztőjét python scriptek futtatására. Közvetlen link: youtu.be/QKFjbnWpQ-E
# Youtube
from IPython.lib.display import YouTubeVideo
YouTubeVideo('QKFjbnWpQ-E', width = 1000, height = 600)
Sajnos a Python még relatív széles körben használt 2.x változata, és a 2008 óta elérhető 3.x változat között nincs teljes kompatibilitás. Tehát, ha például az interneten ilyen kóddokat találunk:
print "Hello, World!"
gyaníthatjuk, hogy Python 2.x -el van dolgunk. Ugyanez a kód Python 3.x-ben így néz ki:
print("Hello, World!")
Erről még lesz szó, egyelőre annyit kell tudnunk, hogy ez a segédlet a 3.x verzióval lett tesztelve.
# mivel a Python 2.x és 3.x szintakitiája enyhén eltér ellenőrizzük, hogy a 3-ast használjuk-e
# később további magyarázat lesz ezekről is
import platform
print(platform.python_version())
3.7.1
Térjük tehát rá a matematikai alapokra.
6 * 8 # szorzás
48
2 ** 10 # hatványozás
1024
100 / 3 # osztás
33.333333333333336
100 // 3 # egész osztás
33
52 % 10 # modulo osztás
2
Pythonban a megszokott aritmetikai operátorok jelen vannak, sőt további hasznosak is.
Operátor | Leírás |
---|---|
+ |
összeadás |
- |
kivonás |
* |
osztás |
** |
hatványozás |
// |
egész osztás |
/ |
osztás |
% |
modulo osztás |
A Python a # karakter utáni szöveget a sor végéig megjegyzésnek értelmezi, több soros megjegyzést 3 idézőjellel vagy aposztróffal kezdhetünk és zárhatunk le.
"""
Ez több
soros komment
"""
'''
Ez
is.
'''
A változókba mentett értékek esetén interaktív módban nem jelenik meg a művelet adott eredménye. Pl:
x = (3 ** 3 ) + 0.2
De kiírhatjuk például a print
funkcióval
print(x)
27.2
Python-ban nincs automatikus típus konverzió a változókra, de a type
függvénnyel kiírathatjuk egy változó típusát.
s = "1024"
type(s)
str
A következő műveletben sincs automatikus típus konverzió, így hibát kapunk.
x + s
TypeError: unsupported operand type(s) for +: 'float' and 'str'
type(s)
str
type(s) is str
True
type(x)
float
A Python alapvetően 3 numerikus típust ismer: int
, float
és complex
.
a1 = 120
print(type(a1))
a2 = 12.0
print(type(a2))
a3 = 5 + 1j
print(type(a3))
a4 = float(7)
print(type(a4))
<class 'int'> <class 'float'> <class 'complex'> <class 'float'>
A sys.float_info.dig
megadja a tizedesjegyek maximális pontosságát.
import sys
sys.float_info.dig
15
A változóinkat integerré konvertálhatjuk, például így:
x + int(s)
1051.2
s * 20 # ez nem megszorozza, hanem többszörözi
'10241024102410241024102410241024102410241024102410241024102410241024102410241024'
Pythonban az osztályokat StudlyCaps
a konstanasokat ALLCAPS
a változókat, metódusokat pedig snake_case
konvenccióval szokás jelölni.
Stringeket többféleképp definiálhatunk: például aposztróffal és idézőjellel is.
s1 = "Ez az egyik mód."
s2 = 'De ez is működik.'
print(s1, s2)
Ez az egyik mód. De ez is működik.
Emlékeztető a karakterkódolásokról:
UTF-8
, UTF-16
és az UTF-32
karakterkódolást, de számos más kódolás is használatban van.A sys.getdefaultencoding()
megadja, mi az alapértelmezett kódolás.
import sys
print(sys.getdefaultencoding())
utf-8
A különbség az aposztróffal és idézőjellel készített stringek között, hogy
"ebben így lehet ' karakter"
'ebben viszont \' kell a visszaper elé'
'illetve fordítva: itt lehet " '
"itt viszont így: \" "
A print
funckió rengeteg lehetőséget ad. Később erre még visszatérünk, most nézzük meg a sep
elválasztó és az end
működését példákon szemléltetve.
print('a','b', 'c', 'da\'sda"as"sd--e')
print("a","b", "c", "deas'aaa'asd")
print("a","b", "c", "de", sep="")
print("a","b", "c", "de", sep="***")
print("x\ny")
print("Ez kerüljön", end=" ")
print("egy sorba.")
a b c da'sda"as"sd--e a b c deas'aaa'asd abcde a***b***c***de x y Ez kerüljön egy sorba.
Összetettebb kódsorok készítése előtt ki kell emelni a Python azon sajátosságát, hogy a Python programokban a kód blokkokat
a sor elején található szóközökkel vagy tabulátorokkal jelöljük. Más nyelvekben a blokk elejét és végét jelölik meg, például C-ben, C++-ban stb. '{'
és '}'
zárójelekkel. A nyelv ezen tulajdonsága kikényszeríti a könnyen olvasható kód készítését, másik oldalon nagyobb figyelmet igényel a sorok írásánál. A szóköz és tabulátor karaktereket nem lehet keverni, gyakran négy szóközös tagolást alkalmaznak.
print("range(6): \t", end="")
# 0 1 2 3 4 5
for x in range(6):
print("%4d" % x, end="")
print("\nrange(3, 9): \t", end="")
# 3 4 5 6 7 8
for x in range(3, 9):
print("%4d" % x, end="")
print("\nrange(3,14,2):\t", end="")
# 3 5 7 9 11 13
for x in range(3, 14, 2):
print("%4d" % x, end="")
print("\nrange(14,3,-2):\t", end="")
# 14 12 10 8 6 4
for x in range(14,3,-2):
print("%4d" % x, end="")
print("\narray (tömb):\t", end="")
primes = [2, 3, 5, 7] # ez egy tömb, később erről bővebben
for prime in primes:
print("%4d" % prime, end="")
print("\nwhile:\t\t", end="")
# 0 1 2 3 4
i = 0
while i < 5:
print("%4d" % i, end="")
i += 1
range(6): 0 1 2 3 4 5 range(3, 9): 3 4 5 6 7 8 range(3,14,2): 3 5 7 9 11 13 range(14,3,-2): 14 12 10 8 6 4 array (tömb): 2 3 5 7 while: 0 1 2 3 4
A listaértelmezések (list comprehension) a listák létrehozásának rövidebb módja. Megjegyzés: a listákról még később lesz szó.
print([i for i in range(6)])
print([i for i in range(3,14,2)])
print([2**i for i in range(3,14,2)])
[0, 1, 2, 3, 4, 5] [3, 5, 7, 9, 11, 13] [8, 32, 128, 512, 2048, 8192]