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:
- A nevezetes algoritmusok megértése.
- A sztringekről tanultak átolvasása.
Í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!
Í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!
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!
Í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!
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?
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!
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.
Ha mindennel elkészültél, dolgozhatsz a szorgalmi feladatokon is. Ezek plusz pontért küldhetők be.