6. Sztringek

6. 1 A string adattípus

Az eddigiek megismert során megismertük az int, float és bool adattípusokat és érintőlegesen említettük a string adattípust, amely elsősorban szövegek tárolására használatos. A szöveges literálokat egyszeres vagy dupla idézőjelek között kell megadni, például:

  • "Balázs"

  • 'Add meg az életkorodat: '

  • "Biztosan ki akarsz lépni?"

  • 'Nem'

  • "Brüsszel"

Ahogy arról már szó volt, egy változó értékének típusa tetszőleges lehet, akár sztring is. A sztringeket szövegnek vagy karakterláncnak is szokták hívni, mivel a sztring tulajdonképpen nem más, mint karakterek sorozata. A sztring egy karakterét visszakaphatjuk az [] operátorral, amelyet a sztring után írunk és a szögletes zárójelek közé a kívánt karakter nulla-alapú sorszámát írjuk, például:

  • 'Anna'[3] == 'a'

  • 'Anna'[0] == 'A'

  • '789'[1] == '8'

Fontos, hogy egy számjegyet ábrázoló sztring literál nem egyenlő magával a számjeggyel. Például: '9' != 9. Ha egy adatot egyik típusból a másikba szeretnénk konvertálni, akkor a str()float()int() vagy bool() típuskonverziós függvényeket használjuk. Ezeket már sokszor használtuk, például a felhasználói adatbevitel során az input() függvény által beolvasott szöveg számmá alakítására. string típusú értéket kifejezésben nem keverhetünk int vagy float értékkel.

+ operátor sztringek összefűzésére, a * operátor pedig a sztringek többszörözésére is használható:

  • "Szia, " + "Áron" == "Szia, Áron"

  • "5" + "5" == "55"

  • "*" * 5 == "*****"

  • "-=|=-" * 3 == '-=|=--=|=--=|=-'

A sztring karakterekben mért hosszát a len() beépített függvény adja vissza:

  • len("szia") == 4

  • len("Kellemes Karácsonyt!") == 20

Az in logikai operátorral megvizsgálhatjuk, hogy egy sztringet vagy karaktert tartalmaz-e egy másik sztring. Például:

  • "ma" in "alma" == True

6.1.1 kérdés

Ha s = "Hello" és t = "World", akkor mi az értéke a következő kifejezéseknek:

  • len(s) + len(t) 

  • s[1] + s[2] 

  • s[len(s) // 2] 

  • s + t

  • t + s 

  • s * 2

 
 

6.1.2 példa

Az alábbi példa bemutatja a sztringek használatát:

6.1.3 feladat

Írj egy programot, amely bekéri a felhasználó vezeték- és keresztnevét, és kiírja a felhasználó monogramját. Például:

Nemecsek Ernő  --> N.E.

 

6.1.4 feladat

Írj egy programot, amely bekér egy szöveget és kiírja annak az első és utolsó betűjét. Például:

Nemecsek Ernő  --> Nő

 
 

6.1.5 feladat

Kérjünk be a felhasználótól egy szöveget és írjuk ki annak a "közepét", azaz a középső karaktert, ha a sztring páratlan számú karakterből áll és a középső két karaktert, ha a karakterek száma páros. Például:

Manna  --> n

Föld --> öl

 

6.1.6 feladat

Számoljuk meg a felhasználó által beírt sztringben a magánhangzókat. Például:

Manna  --> 2

Föld --> 1

Örökkön-örökké --> 6

6.1.7 feladat

Számoljuk meg a felhasználó által beírt sztringben a számjegyek számát. Például:

A 66-os út  --> 2

Így neveld a sárkányod 2. --> 1

Pi = 3.1415 --> 5

 

6.2. Sztring szeletek (slices)

Azt már láttuk, hogy az s sztring i. sorszámú karakterét visszakaphatjuk az s[i] operátorral, ez a sztring szelet / slice legegyszerűbb formája (a sorszámozás nulláról indul). Itt az i sorszámot a karakter indexének hívjuk. Az index lehet negatív is, ilyenkor visszafelé haladunk a sztring végéről, például 'Hello'[-1] =  'o', 'Hello'[-4] =  'e', stb. Ha olyan indexet adunk meg, amely i < -len(s) vagy i > len(s), akkor hibát kapunk. 

Ha két, kettősponttal elválasztott paramétert adunk meg a szelet operátornak s[a:b] 

formában, akkor az eredmény az s sztring és b-1 indexek közé eső szelete lesz. Például,

'Hello'[2:4] = 'll' vagy 'Hello'[-4:-1] = 'ell'.

Ha az első vagy a második paraméter elmarad, akkor a sztring eleje vagy a sztring vége az alapértelmezett. Például: 'Annamária'[:4] = 'Anna' és 'Annamária'[4:] = 'mária'.

Ennek megfelelően az ​s[1:] az első betű nélküli sztringet, az ​s[:1] pedig az utolsó betű nélküli sztringet jelenti.

A szelet operátornak megadhatunk egy 3. paramétert is újabb kettősponttal elválasztva,

 s[a:b:c] formában, ilyenkor a c érték lépésközként viselkedik.

Például, 'Csemete'[1:7:2] = 'smt'

 

6.2.1 kérdés

Ha s = "abcdefg", akkor mi az értéke a következő kifejezéseknek:

  • s[1]

  • s[-1]

  • s[1:3]

  • s[1:-1]

  • s[:3]

  • s[2:]

  • s[:-1]

  • s[::2]

  • s[1::2]

  • s[::-1]

 

6.2.2 feladat

Kérjünk be egy sztringet, vágjuk le az első és utolsó betűt és írjuk ki az eredményt.

 

6.3. String metódusok

A string típusnak van pár, a string objektumon meghívható metódusa, ezek közül a lényegesebbek a következők:

  • s.find(txt) - megkeresi az s sztringben a txt résszöveg első előfordulását és visszaadja annak a pozícióját. Ha a sztringben nem található a keresett résszöveg, akkor -1-et ad vissza. A fenti metódus párja, a s.rfind(txt) a keresett résszöveg utolsó előfordulásának a helyét adja vissza,

  • s.replace(a, b, c) - megkeresi az s sztringben az szöveg első c előfordulását és lecseréli b szövegre. Ha a harmadik paraméter el van hagyva, az a szöveg mindegyik előfordulása b szövegre lesz cserélve. Például:

'kilencvenkilenc'.replace('kilenc','9', 1) = '9venkilenc'

  • s.count(a) - megszámolja az a résszöveg előfordulásainak számát az s sztringben

  • s.lower(), s.upper() - az s sztring kisbetűssé / nagybetűssé alakított változatát adja vissza.