Változók

Az előző fejezetben telepítettük a PyCharm nevű IDE-t, és röviden átfutottuk a generált kezdőprogram tartalmát. Ebben a fejezetben megismerkedünk a programok egyik elengedhetetlen hozzávalójával, a változókkal. Ahogyan a matematikában, úgy a szoftverek világában is szükség van különböző értékek reprezentálására. Gondoljuk át, hogy a matematikában ezek hogyan működnek! Amikor először bevezetünk egy új változót azt más szóval a változó deklarálásának nevezzük. Ez együtt szokott járni a változó értékkészletének megadásával. Például x eleme a válós számok halmazának. Ezek után a változókhoz értéket rendelünk: x := 10. A különböző változók aztán műveletekben vesznek részt. Gyakran függvények változóiról beszélünk. Ez azért hasznos, mert anélkül, hogy konkrét értékekről kellene beszélni, tudunk általános műveleti szabályokat definiálni. Az y = 10x + 4x^2 + 6 egy általános matematikai utasítás sorozat, ami egy konkrét x érték ismeretében könnyen elvégezhető.

Most, hogy gondolkodtunk a matematikai változók szerepéről, nem lesznek olyan idegenek a programozási nyelvekben használatos változók sem. Egy programban megtehetjük, hogy csak előre begépelt értékekkel dolgozunk, de ennek önmagában nem sok gyakorlati haszna van. Elvégre, ha előre imsertek az értékek, akkor minek a program? Miért nem végeztük el a műveleteket előre papíron, és íratjuk ki a megoldást: print("A megoldás 42.") Azért az így bedrótozott értékeknek is lehet olykor haszna. Ezeket "szép" magyarsággal literáloknak nevezzük. Gyakori használatuk azonban erősen ellenjavallot!

Változók deklarálása

A matematikához hasonlóan a programokban használni kívánt változókat is használat előtt deklarálni kell. Ez Python esetében igen egyszerű feladat. Írjuk le a változó nevét, majd egyenlőséggel rendeljük hozzá az értéket! Ezt próbáljuk is ki a múltkor generált üdvözlő program szerkesztésével! Kezdjünk új sort a print(f'Hi, {name}') sor után! Ebben a sorban is tartsuk meg a 4 szóköznyi betolást! Ezzel jelezzük, hogy továbbra is a print_hi függvényt folytatjuk. Itt írjuk a x = 10 sort! Ezzel létrehozzuk az x változót, amihez rögtön hozzárendeltük a 10 egész értéket. Hozzunk létre még egy változót a következő sorban: y = 5!

                        
def print_hi(name):
    print(f'Hi, {name}')
    x = 10
    y = 5
                        
                    
Érték hozzárendelés

Ugyan a deklarálás során máris rendeltünk értéket a változóinkhoz, később is megváltoztathatjuk az értékük. Ehhez egyszerűen újra az egyenlőségjelet használjuk. x = x + y + 2 Ezzel az x értéke 10-ről 10 + 5 + 2 = 17-re változik. Itt az értékadás jobb oldalán is használtuk ugyanazt a változót, amihez az új értéket akarjuk rendelni. Ez teljesen rendben van. Azért működik, mert először az egyenlőségjel jobb oldalán levő kifejezés értékelődik ki. Így elöször előáll a 10 + 5 + 2 eredménye, amit végül hozzárendelünk az x-hez, felülírva annak korábbi tartalmát.

Hogy láthassuk, ez valóban működik, írjunk még egy kódsort! Legyen ez a következő: print("Az eredmény " + str(x)) Futtatva a programot a helyes megoldást a konzolban olvashatjuk. Itt a str(value) függvény karakterlánccá konvertálja a számértéket.

                        
def print_hi(name):
    print(f'Hi, {name}')
    x = 10
    y = 5
    x = x + y + 2
    print("Az eredmény " + str(x))
                        
                    
Alapvető típusok

Az eddigi példákban egész számokat rendeltünk értékül változóinkhoz. Az egész számokra az integer angol kifejezéssel szoktunk hivatkozni. Ezeken kívül szükségünk lehet törtrésszel rendelkező értékekre is. Az ilyeneket floating point vagy röviden float értékeknek nevezzük utalva ezzel a mozgó tizedes vesszőre. A tizedes vessző helyett Pythonban (hasonlóan más programnyelvekhez) pontot teszünk. Ez segít a elkerülni a keveredést a felsorolást jelentő vesszők és a tizedes számok közt. Változtassuk meg kódunkban az összeadásban szereplő valamelyik értéket, kiegészítve azt néhány tizedesjeggyel! Ez után futtatva a programot a kiírt eredmény is tartalmazni fogja a tizedes részt. A Python annyira rugalmas, hogy ha elosztunk két egész számot, amely eredményeként egy tizedes törtet kapunk, akkor az eredmény már float lesz. Persze mondhatnánk, hogy ez az elvárt, de más programozási nyelveknél ez nem magától értetődő.

Eddig egész és tizedes számokkal dolgoztunk. A következő típus legyen a szöveg! Betűk, számjegyek, írásjelek lánca. Igen, ez is egy külön típus. Egy nagyon fontos típus. A karakterláncot string-nek nevezzük. Igazából már találkoztunk vele, amikor a print függvénnyel szöveget írattunk ki a konzolra. Ez egy string paramétert fogadott. Ezen kívül a print_hi függvény is string értéket vár paraméterül, ami a name változóhoz rendelődik hozzá. A stringeket Pythonban egyszeres vagy kétszeres idézőjelek közé írjuk. Például x = 'Ez egy string.' vagy y = "Ez egy másik.". Lehetőség van stringek összefűzésére. Ezt a plusz jel használatával tehetjük meg. Ezt alkalmaztuk a print("Az eredmény " + str(x)) műveletben, ahol az "Az eredmény " karakterláncot és az x változó értékét karakterlánccá alakítva a kettőt a + operátorral fűztük össsze. Egy másik lehetőség a print(f'Hi, {name}') példában látott megoldás. Itt egy karakterláncba ágyaztunk egy másik változót. A string műveletekkel egy későbbi fejezetben fogunk részletesebben foglalkozni.

Beszéljünk a logikai értékekről! Egy logikai kifejezés kiértékelése után igaz vagy hamis eredményre jutunk. Ezeket Pythonban a True és False kulcsszavak jelölik. Az a változó, amely ezen kettő közül vesz fel értéket Boolean típusú. A boolean tehát a logikai érték szinonímája. Eddigi tapasztalatainkkal egy ilyen változó deklarálása és értékadása már gyerekjáték: b = True vagy b = False.

Lista

Az integer, float, string és boolean néhány alapvető típus, amellyekkel lényegében már bármit le tudunk írni. Jó volna azonban, hogyha ezeket nem csak egyesével tudnánk tárolni! Hozzunk létre olyan adatszerkezeteket, amelyek egyszerre sok változót tartalmaznak!

Egy ilyen adatszerkezet a lista (list), amely értékek felsorolását tartalmazza. Létrehozásához szögletes zárójelek közt vesszővel elválasztva soroljuk fel az értékeket. Például lista1 = [10, 5, 46, 8, 9, 11, 8, 9] vagy lista2 = ["alma", "körte", "szilva"]. A lista1 illetve lista2 változókhoz most egy-egy listát rendeltünk. A lista is egy típus! Változók tárolhatnak lista típusú értéket. Láthatjuk, hogy egy érték többször is előfordulhat egy listában (a 8 és 9). Ez nem probléma, viszont a jövőben majd megismerkedünk olyan adatszerkezettel is, amelyben nem ismétlődhetnek értékek. Ebben a fejezetben azonban nem merészkedünk tovább a listánál. Ennek is sok tulajdonsága van. Most csak az alapokat nézzük meg, hogy betekintést nyerjünk a témába. Azon kívül, hogy ismétlődhetnek azonos értékek, a listák másik fontos jellemzője a fix sorrend. Ez azt jelenti, hogy az elemek olyan sorrendben lesznek tárolva, amilyen sorrendben felsoroltuk őket. Ez a sorrend nem változik meg, hacsak mi nem pakoljuk át az elemeket. A tárolt elemekhez indexeléssel férhetünk hozzá. Ehhez a listát tároló váltózó neve után közvetlenül szögletes zárójelek közé írjuk a elérendő elem indexét. A sorszámozás nullától indul. A példánkban elsőként deklarált lista első elemét tehát lista1[0] formában érhetjük el. A listák elemeinek értéke módosítható. Ehhez írjuk az egyenlőségjel bal oldalára az indexelt változónevet! lista1[0] = 15 Jó kényelmi funkció, hogy a print függvénnyel egyszerűen kiíratható egy lista tartalma. print(lista_nev)

                    
lista1 = [10, 5, 46, 8, 9, 11, 8, 9]
lista2 = ["alma", "körte", "szilva"]
lista1[0] = 15
print(lista1)   
print(lista2)   
                    
                

Figyeljük meg, hogy a konzolba írt integereket tartalmazó lista első eleme már a megváltoztatott 15-ös érték!

A Python egy érdekes tulajdonsága, hogy egy listában nem csak azonos típusú elemeket lehet tárolni. Simán megcsinálhatjuk, hogy vegyesen sorolunk fel a korábban tanult típusú elemeket.

                    
vegyes_lista = [10, "szöveg", 11.52, True, False]
print(vegyes_lista)
                    
                

Ez így mondjuk elég zavaró. Általában nem szokás létrehozni ilyen kevert listákat. Nehéz lenne vele a munka, hiszen nem tudjuk, hogy az egyes értékeknél milyen típusra számítsunk.

Összefoglaló

Ebben a fejezetben megtanultuk, hogyan hozhatunk létre változókat. Szó volt néhány gyakori típusról. Már tudunk számokat reprezentálni integer és float formájában. Tárolhatjuk a kedvenc filmünk címét string típusú változóként. Számon tarthatjuk, hogy esik-e az eső ma boolean változó segítségével. Mindezekből listát is készíthetünk, amely értékeit később egyesével érhetjük el.