Kihagyás

Szerkesztés alatt!

Az oldal további része szerkesztés alatt áll, a tartalma minden további értesítés nélkül többször, gyakran, jelentősen megváltozhat!

Python alapok

Hello World!

Mielőtt részletesebben belemennénk a Python rejtelmeiben érdemes a lehető legegyszerűbb program részletünket megírni. Legyen ez most egy egyszerű "Hello World!" szöveget kiíró kódrészlet.

1
print("Hello world!")

Mentsük el ezt egy hello.py fájlba és futtassuk le. Amennyiben terminálból szeretnénk futtatni ezt akkor az alábbi paranccsal megtehetjük:

python hello.py

Az eredménye ennek az, hogy a képernyőn megjelent a Hello World! kiírás.

Kis- és nagybetűk

Fontos kiemelni azt, hogy Pythonban meg vannak különböztetve a kis- és nagybetűk (case sensitive). Azaz ha a fenti példában a print helyett PRINT-et írtunk volna akkor nem működött volna a kiíratásunk. Ez azért van, mert a kisbetűs print és nagybetűs PRINT két eltérő elemre hivatkozik és csak a kisbetűs létezik.

További kiegészítés: Ez a tulajdonság sok más programozási nyelvben is megtalálható.

A pontosvessző hiánya

Amennyiben esetleg van ismeretünk már programozási nyelvvel elsőre furcsa lehet, de az utasítások végére nem kell pontosvesszőt írni Pythonban. Így a fenti "Hello World!" esetben a print után se írtuk ezt ki.

Kommentek

Pythonban írhatunk a kódba kommenteket (megjegyzéseket). Egysoros kommentet # után írhatunk, míg több soros kommentet egymás utáni #-kell írhatunk. Lásd még.

1
2
3
4
# ez egy egysoros komment

# ez egy több
# soros komment

Alapvető adattípusok

Az alábbiakban röviden áttekintjük a Python legalapvetőbb adattípusait és azok jellemzőit.

A bool típus

Logikai adattípus. Értéke True vagy False lehet. Fontos, hogy mindkét kulcsszó érzékeny a kis- és nagybetűkre.

(tehát pl. a Javából ismert csupa kisbetűs true nem fog működni).

Az int típus

Az egész számok típusa. A típusra vonatkozóan nincs méretkorlát.

Régebbi verziók

Python 2-ben még volt külön long és int típus az egész számokra. Ezt Python 3-ban egységesítették int-é.

A float típus

A lebegőpontos ("valós") számok típusa. Pythonban is tizedespontot használunk tizedesvessző helyett a lebegőpontos számok megadásakor (pl. 3.14).

Az str típus

Szöveges adattípus, string. Pythonban nincs külön típusa egy karakternek. Pythonban szövegeket általában idézőjelek ("...") vagy aposztrófok ('...') között adunk meg. A két megadási mód között nincs lényegi különbség.

Kitekintés más nyelvekre

Más nyelvekben előfordulhat, hogy egy karakternek van saját adattípusa. Például C-ben/Java-ban van char típus erre a célra.

Kiíratás

Ha Pythonban ki szeretnénk valamit íratni a standard outputra, akkor a print() beépített függvényt tudjuk használni. Ezt használtuk már a fejezet elején is.

A python (vagy szükség esetén python3) paranccsal indítsuk el a parancssori Python értelmezőt, majd adjuk ki az alábbi utasítást!

1
print("Hello World!")

Kimenet

1
Hello World!

Az Enter lenyomása után valóban megjelenik a konzolon a "Hello World!" szöveg.

A print() függvényt egyébként több paraméterrel is meghívhatjuk. Ekkor a függvény ezeket a paramétereket sorban, (alapértelmezett módon) szóközzel elválasztva írja ki.

1
print("Most", "már", 5, "paraméterünk", "van")

Kimenet

Most már 5 paraméterünk van

Szöveg formázás

A formázott szövegek segítségével egyszerűen és intuitíven megadhatók a behelyettesítendő értékeket (pl. változókat) tartalmazó szövegek. Ekkor - a "hagyományos" stringösszefűzős módszerrel ellentétben - nem kell megszakítanunk a szövegünk folytonosságát mindenféle összefűzésekkel, valamint a típuskonverziókkal sem kell bajlódnunk.

Pythonban a szövegek formázására többféle módszert is használhatunk. A következő három alfejezet ezeket mutatja be röviden.

%-os formázás

A % formázás az egyik legrégebbi mód Pythonban arra, hogy behelyettesítsünk értékeket. A string típuson lehetőség van használni a % műveletet (operátort). Ennek segítségével a szövegben található %-os kifejezések helyére van lehetőség értékeket behelyettesíteni. A szövegben a %s helyére másik stringet, míg %d-vel egész értékeket tudunk helyettesíteni. Az operátor bal oldalán kell a stringnek lennie, míg másik oldalán a behelyettesítendő értékeknek.

Vegyük példának az alábbi utasítás sorozatot:

%-os formázás

1
2
3
4
nev = "Béla"
eletkor = 21
uzenet = "Hello, %s vagyok, %d éves." % (nev, eletkor)
print(uzenet)

Példa kimenete

1
Hello, Béla vagyok, 21 éves.

További információ

A format metódus

A format metódus is a string típusú adatokon működik. A szövegben elhelyezett {} elemeket tudja behelyettesíteni a kapott paraméterekkel és balról jobbra haladva illeszti be az értékeket.

Vegyük példának az alábbi utasítás sorozatot:

format metódus

1
2
3
4
nev = "Béla"
eletkor = 21
uzenet = "Hello, {} vagyok, {} éves.".format(nev, eletkor)
print(uzenet)

Példa kimenete

1
Hello, Béla vagyok, 21 éves.

A {} kifejezéseket nem csak ilyen formában lehet használni, hanem adhatunk nevet is a behelyettesítendő elemnek. Vegyük az alábbi példát ahol a e-nek neveztük el a behelyettesítendő elemet:

format metódus paraméterezés

1
2
text  = "Az e értéke: {e}".format(e=2.718281)
print(text)

Példa kimenete

1
Az e értéke: 2.718281

További információ

f-string-ek

Az f-string-ek (formatted string) tovább egyszerűsítik a szöveg formázást. Segítségükkel közvetlen a szövegben meg tudjuk adni mely változókat szeretnénk behelyettesíteni. Ehhez ismételten a {} formátumot fogjuk használni és a kapcsos zárójelek közé adhatjuk meg a változókat. Azonban, hogy egy string f-string legyen egy f prefixxel kell ellátni.

Vegyük példának az alábbi utasítás sorozatot:

f-string formázás

1
2
3
4
nev = "Béla"
eletkor = 21
uzenet = f"Hello, {nev} vagyok, {eletkor} éves."
print(uzenet)

Példa kimenete

1
Hello, Béla vagyok, 21 éves.

A kapcsos zárójelek közé nem csak egyszerű változókat tudunk megadni hanem komplexebb dolgokat is.

További információ

Változók

Pythonban lehetőség van létrehozni változókat.

Azonban nincs lehetőségünk külön változó deklarációra, ugyanis Pythonban egy változó akkor jön létre, amikor először értéket adunk neki. Az értékadásra az = (egyenlőségjel) operátort használjuk.

1
2
# változó létrehozása és értékadás
az_en_valtozom = "valami szöveg"

A változók elnevezésre vonatkozóan van néhány szabály, amelyet szem előtt kell tartanunk:

  • A változónév csak betűket, számokat és alulvonás karaktert (_) tartalmazhat.
  • A változónév csak betűvel vagy alulvonással kezdődhet (nem kezdődhet számmal).
  • A változónév érzékeny a kis- és nagybetűkre (tehát pl. foo, Foo és FOO három különböző változónak számít).
  • A változónév természetesen nem lehet foglalt kulcsszó (pl.: class, except stb.).

Változó név eltérések

1
2
3
4
5
desszert = "palacsinta"
Desszert = "tiramisu"

print(desszert)         # a változónév kis- és nagybetűérzékeny!
print(Desszert)

Kimenet

1
2
palacsinta
tiramisu

Változó elnevezési konvenciók

Pythonban az aláhúzással kezdődő változónevekere vannak konvenciók. Amennyiben egy változónév egy darab aláhúzással kezdődőik az azt akarja jelenteni, hogy csak az adott "részen" belül ajánlatos használni. A kettő aláhúzással kezdődő neveket maga a Python interpreter kicsit átalakítja. További konvenciókat és bővebb információt a PEP-8 ad.

Dinamikusan típusosság

Egy érdekesség, hogy Pythonban ugyanannak a változónak nem csak az értéke változhat meg hanem a típusa is. Azaz a változó "tartalmát" teljesen le lehet cserélni.

1
2
3
val = 42
val = 12.345
val = "sajt"

Például a fenti kódban a val változó kezdetben egy egész számot, majd egy valós számot, később pedig egy szöveget tárol. Ezt a jelenséget dinamikusan típusosságnak nevezzük.

Azt, hogy egy adott pillanatban egy változó éppen milyen típusú adatot tárol, egyszerűen lekérdezhetjük a type() függvény segítségével.

Példa a type() használatára

1
2
val = "Ez egy szöveg"
print(type(val))

Kimenet

1
<cass 'str'>

Alapvető operátorok

A Python nyelv fontosabb operátorai:

Kategória Operátorok
Aritmetikai operátorok +, -, *, /, //, %, **
Hozzárendelő operátorok =, +=, -=, *=, /=
Összehasonlító operátorok ==, !=, <, <=, >, >=
Logikai operátorok and, or, not

Operátorok:

  • Az alapvető aritmetikai operátorok a matematikából megismert precedenciát használják.
  • A / operátor mindig (egész operandusok esetén is) lebegőpontos osztást végez.
  • Egész osztást a // (dupla per) operátorral végezhetünk.
  • Hatványozásra a ** (dupla csillag) operátor alkalmas.
  • A logikai operátorok esetén nyelvi kulcsszavakat kell használni: and (logikai ÉS), or (logikai VAGY), not (logikai tagadás).

Példa operátorok

1
2
3
print(5 / 2)     # lebegőpontos (valós) osztás
print(5 // 2)    # egészosztás
print(5 ** 2)    # hatványozás

Kimenet

1
2
3
2.5
2
25

Egy érdekes Python tulajdonság a szövegek többszörözése. Ha egy szöveget "beszorzunk" egy számmal (* operátor), akkor a szöveg a szám által meghatározott alkalommal lesz egymás után.

string * int

1
2
3
4
5
6
7
8
ha = "ha" * 5
print(ha)

ha = 5 * "ha"
print(ha)

nana = ("Na" * 10) + " BATMAN"
print(nana)

Kimenet

1
2
3
hahahahaha
hahahahaha
NaNaNaNaNaNaNaNaNaNa BATMAN

Logikai operátorok

Érdemes megjegyezni, hogy más nyelvekben a logikai operátorra tipikusan vannak szimbólumok amiket használni kell és nem kulcsszavakat alkalmazunk.

Inkrementálás, dekrementálás

Fontos megjegyezni, hogy a inkrementáló/dekrementáló operátorok, vagyis a ++ és a -- operátorok Pythonban nem léteznek (se prefix, se posztfix formában)!

Hibás ++ operátor

1
2
szam = 10
szam++          # ez nem fog működni! (értelemszerűen a szam-- se működne)

Visszakapott hibajelzés

1
2
3
4
  File "<stdin>", line 1
    szam++
          ^
SyntaxError: invalid syntax

Ezek helyett használjuk a += 1, illetve -= 1 alternatívákat az érték 1-gyel való növeléséhez, illetve csökkentéséhez.

Példa +=/-=

1
2
3
4
5
6
7
szam = 10

szam += 1       # érték megnövelése 1-gyel
print(szam)

szam -= 1       # érték csökkentése 1-gyel
print(szam)

Kimenet

1
2
11
10

Típuskonverzió

Pythonban szükségünk lehet arra, hogy egy adatot más típusra konvertáljunk.

Ha egy szöveget egész számmá akarunk alakítani, akkor az int() függvényt használjuk.

int()

1
int("42")           # 42-t mint egész szám adja vissa

Ha egy szöveget lebegőpontos számra szeretnénk konvertálni, a float() függvény használatos.

float()

1
float("3.14")       # 3.14

Pythonban van egy olyan szabály, hogy szöveget csak szöveggel lehet összefűzni. Ha egy szöveget nem egy másik szöveggel akarunk összefűzni, akkor hibát kapunk.

Szöveg + szám

1
print("Az élet értelme: " + 42)

Visszakapott hibajelzés

1
2
3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str

Ekkor a nem szöveges típusú adatot először szöveggé kell konvertálnunk az str() függvénnyel. Alternatíva, hogy valamely szöveg formázási módot használjuk.

str()

1
print("Az élet értelme: " + str(42))

Kimenet

1
Az élet értelme: 42

Beolvasás a konzolról

Ha Pythonban adatot szeretnénk beolvasni a felhasználói bemenetről (standard input/stdin), akkor az input() függvényt tudjuk használni. A függvény visszatér a beolvasott adattal, így egyszerűen eltárolhatjuk azt egy változóban, ha szeretnénk.

Az input()-nak opcionálisan átadható egy szöveges paraméter is. Ez a szöveg az input adat beolvasásakor jelenik meg, így ezt általában arra használjuk, hogy tájékoztassuk a felhasználót, hogy milyen bemeneti adatot vár a programunk.

Fontos megjegyezni, hogy az input() függvény minden esetben egy szöveget olvas be, amit szükség esetén más típusra kell konvertálnunk.

1
2
nev = input("Hogy hívnak? ")    # input adat eltárolása változóban
print("Szia " + nev + "!")

Kimenet

1
2
Hogy hívnak? Tamás
Szia Tamás!

Olvassunk be két egész számot a felhasználói inputról, és írassuk ki az összegüket!

1
2
3
4
5
6
7
8
a = input("Első szám: ")         # beolvasás
b = input("Második szám: ")

a = int(a)                       # konvertálás egész számra
b = int(b)

sum = a + b
print("Az összeg: " + str(sum))  # konvertálás stringre

Kimenet

1
2
3
Első szám: 5
Második szám: 2
Az összeg: 7