
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.
A + 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 i 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 a é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 s sztringet, az s[:1] pedig az utolsó betű nélküli s 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 a 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