3. hét: sztringműveletek

Czirkos Zoltán, Frey Balázs, Bulla Ádám · 2021.09.17.

Sztringekkel végzett műveletek. Sztringek beolvasása, darabolása, feldolgozása karakterenként.

Felkészülés a laborra:

1. Mindentegybevéve

Írj egy olyan programot, mely egy szövegből kiszedi a szóközöket!

Ennek megoldása – megoldási ötlete – kelleni fog a következő feladathoz.

2. Palindrom I.

Írj programot, amelyik eldönti egy szóról, hogy palindrom-e! Például az „abba” és a „görög” ilyenek: visszafelé olvasva ugyanazt a szót kapjuk.

3. Palindrom II.

Írj programot, amelyik egy mondatról eldönti, hogy palindrom-e. Közismert magyar nyelvű palindrom mondat az „Indul a görög aludni.” Ez abban különbözik az előző feladattól, hogy most a szóközöket és az írásjeleket ki kell szűrnöd, vagyis csak a betűket kell megtartani, és úgy kell vizsgálni a sztringet. És persze figyelni arra is, hogy a kisbetűk és a nagybetűk nem különböznek.

Tipp

Érdemes előállítani a sztringnek egy olyan kisbetűsített változatát, amiben semmi nem marad meg a betűkön kívül – vagyis eltűnnek a szóközök és az írásjelek is. Betű-e – nézz szét a sztring típus függvényei között!

4. Madárnyelv

Írj programot, amely madárnyelven (mavadávárnyevelveven) írja ki a beírt szöveget! Ezt azt jelenti, hogy minden magánhangzó után tesz egy v-t is, és megismétli a magánhangzót. Pl. te → teve, ma → mava, labor → lavabovor.

Valósítsd meg ezt úgy, hogy a beolvasott sor alapján egy új sztringet állítasz elő, és végül azt írod ki! Használd a tanult sztringműveleteket!

5. Trimmer

Gyakori feladat, hogy egy sztring elejéről és végéről el kell távolítani a szóközöket. Ezt a függvényt gyakran trim-nek vagy strip-nek szokták hívni. Pythonban is van ilyen: " helló világ ".strip() értéke "helló világ".

A feladatod megírni ezt az algoritmust, hogy megértsd a működését! Írj olyan programot, ami kér egy szöveget, és eltávolítja annak elejéről és végéről a szóközöket. Írd ki utána idézőjelek között a vágott sztringet!

Ha elkészültél, ellenőrizd, működik-e a programod olyan sztringre, ami csak szóközt tartalmaz, vagy esetleg eleve teljesen üres! Ha nem, javítsd ki!

6. Gipsz Jakab

A feladat: megcserélni egy névben a keresztnevet és a vezetéknevet, és az eredményt egy másik sztringben előállítani.

eredeti = "Gipsz Jakab"

... itt bármit csinálhatunk...

print("|" + forditott + "|")    # |Jakab Gipsz|

7. SpONgEBob MOcKiNG MeMe

Írj programot, amelyik a beírt sorból olyan sztringet állít elő, amelyben VÉletLEnszErŰeN VÁLtAkoZnAK a kis- és nagybetűk! Használd az előadáson tanult sztringműveleteket!

Pythonban véletlenszámot a random modul (import random) egyik függvényével tudsz létrehozni. Ennek neve: random.randint(). Paramétere egy alsó és egy felső határ; random.randint(0, 1) véletlenszerűen 0-t vagy 1-et ad.

Tipp

Figyelj a feladatkiírás pontos értelmezésére: nem csak SpoNGyaBobOSAn kiírni kell a sztringet, hanem egy új sztringet kell előállítanod egy változóban, amely ilyen formában tartalmazza a szöveget!

Logikus lenne arra gondolni, hogy a beolvasott sztring karaktereit módosítod, de ilyet nem tudsz csinálni Pythonban: a sztring egyes karakterei nem írhatók felül. Egy üres sztringet kell létrehoznod, és ahhoz hozzáfűzni a karaktereket kisbetűsítve vagy nagybetűsítve.

Hasonló feladatok

Ha a fenti feladatok nehezen mentek, megoldhatsz pár hasonló feladatot a példatárból, mielőtt a következő feladatra rátérsz.

Vigyázz, a laborfeladatokat erősen ajánlott az utolsó feladatig megoldani, hogy a jövő hétre felkészült legyél. Ha nem sikerül, fejezd be őket otthon!

8. A beírt szavak

Készíts programot, amelyik szavakat kér a felhasználótól, és hozzáfűzi őket egy listához! A beolvasás álljon meg akkor, ha üres sort kap.

Írj be szavakat, majd jelezd üres sorral a lista végét!
alma
körte
barack

Ha megvan mind, írd ki a beírt szavakat vesszővel elválasztva! Ügyelj arra, hogy ne legyen sehol felesleges szóköz vagy vessző, és legyen pont a mondat végén! Ehhez nem lesz elég a print(lista), mert az egész más formátumban írja ki az adatokat.

A beírt szavak: alma, körte, barack.
Tipp

Végjeles vagy előre adott hosszúságú sorozatról van szó? Mit jelent ez, hogy „a beolvasás üres sornál áll meg”? Hogy jelenik meg ez a ciklusfeltételben?

9. Lista léptetése

P i t a g o r a s z
i t a g o r a s z P
t a g o r a s z P i
a g o r a s z P i t
g o r a s z P i t a
o r a s z P i t a g
r a s z P i t a g o
a s z P i t a g o r
s z P i t a g o r a
z P i t a g o r a s

Írj egy programot, amely létrehoz egy tízelemű, sztringekből álló listát! Ebben egyetlen karakterből álló sztringek legyenek, bennük Pitagorasz nevének betűível: 'P', 'i' és így tovább. Írja ki a program ezt a listát a képernyőre, a betűket szóközökkel elválasztva!

Léptesd a lista összes elemét eggyel az eleje felé! A lista egyik végén kilépő elem jöjjön be a túlsó végén. Ismételd meg ezt a műveletet tízszer, közben mindig írd ki a listát! Az eredmény a jobb oldalon láthatóhoz hasonló kell legyen.

Vigyázz, nem az a feladat, hogy egy trükkös kiírást csinálj! A listát kell úgy megváltoztatni, hogy elmozduljanak benne az elemek. A kiírásnak mindig a lista elejétől a végéig kell haladnia, minden sorban. A kód felépítése tehát ez kell legyen:

CIKLUS 10-szer

    CIKLUS a kiírásához...  itt csak printek vannak, nem változik a lista

    CIKLUS a léptetéshez... itt változik a lista, és nincsenek printek

CIKLUS VÉGE
Tipp

Egyetlen listára van csak szükség, másikat nem kell létrehozni! Az első felülírható a másodikkal, a második a harmadikkal… Kérdés, az utolsó helyre ilyenkor mi kerül. Rajzold le, és gondold végig úgy, minek kell történnie!

10. Caesar-féle kódolás

A Caesar-féle kódolás lényege, hogy a titkosítandó szövegben minden betű helyett ábécében a következőt vesszük. Így lesz az „barack” szóból „cbsbdl”: b→c, a→b, r→s és így tovább.

Írj programot, amelyik beolvas egy szót, és kiírja a titkosított változatát! Csak az angol ábécé kisbetűs karaktereivel kell foglalkozni, minden más maradjon változatlanul. A „z” betűből legyen „a” betű!

Tipp

Az ord() függvénnyel lehet lekérdezni a karakterkódot. Pl. a kis „a” betűnél ez 97, hozzáadva egyet 98-at kapunk, ami meg pont a „b” betű kódja. Ezt megadja a chr() függvény.

11. Szorgalmik

Ha mindennel elkészültél, dolgozhatsz a szorgalmi feladatokon is. Ezek plusz pontért küldhetők be.