Szövegek vágása
Ha úgy érzed, hogy elakadtál, és több segítségre van szükséged, keress bizalommal! Kedvező árú magánórák keretében szívesen segítek elsajátítani a programozás alapjait.
Magánóra ajánlatokSzöveges adatok feldolgozásakor gyakori, hogy egy hosszabb szövegnek egy részét szeretnénk kivágni valamilyen további felhasználásra úgy, hogy nincs a szövegrészek között elválasztó karakter. (elválasztó karakter esetében használhatjuk a a split-et) Adott például az alábbi szövegrészlet: 20250117, amelyből kinyerhetjük külön az évet, a hónapot, valamint a napot a Python szövegvágás funkciójával.
# 01234567 <-- karakterek indexei
datum = "20250117"
ev = datum[:4] # Megadja a szöveg első 4 karakterét
honap = datum[4:6] # Megadja a szöveg 4. és 5. karakterét
nap = datum[6:] # Megadja a szöveg 6. karakter utáni részét
A szövegek vágásához tehát a "szölgetes zárójel kettősponttal" operátort használjuk. Az operátor alapvető működése: [eleje:vége] ahol az eleje mutatja az első olyan karaktert, amit meg szeretnénk kapni (ne feledd! a karakterek is 0-tól indexelődnek, tehát az első karakter a 0-s számú, a következő az 1-es, stb.), a vége pedig megmutatja, hogy mi az első olyan karakter, amit már nem szeretnénk megkapni. Ez tehát lényegében azt jelenti, hogy a datum[4:6] két karaktert ad vissza: a szöveg 4-es és 5-ös sorszámú karakterét. A 6-os karaktert már nem adja vissza.
A fentebbi példa átláthatósága érdekében a szöveg fölött feltüntettük a karakterek indexeit. Amennyiben a vágás során az eleje nem kerül megadásra, akkor a vágás a szöveg legelején kezdődik -- amennyiben pedig a vége marad üresen, úgy a kivágott rész a szöveg legvégéig tart.
További példa szövegek vágására
Az alábbi példában egy vonat kijelzőjén megjelenő feliratot vágjuk szét annak alkatrészeire:
felirat = "Z60 Újszász - Szolnok"
tipus = felirat[:1] # "Z"
szam = felirat[1:3] # "60"
koztes = felirat[4:11] # "Újszász"
vegallomas = felirat[14:] # "Szolnok"
Próbáld ki magad is! Nézd át a cikkünkhöz tartozó mintakódot - szerkeszd és futtasd közvetlenül a böngésződben, az info9
LineFlame fejlesztőeszközével!
Gyakorló feladatok
1. Feladat: Egy iskola egyedi azonosító számot generál a tanulói számára, amely az alábbiakból épül fel:
- A szám első számjegye a diák szakját mutatja meg
- A szám 2-5. számjegye a diák születési évét mutatja
- A szám 6-8. számjegye azt mutatja, hogy a diák az adott év hányadik napján született
- A szám 9-11. számjegye egy sorszám, az azonos napon született diákok megkülönböztetésére
Készíts egy programot, amely bekér egy ilyen 11 számjegyű azonosítót a felhasználótól, majd ez alapján kiírja, hogy melyik évben született az adott tanuló! Például a 32011129074 kódú diák - a fentebb leírtak alapján - 2011-ben született.
1B. Feladat: Fejleszd tovább az előbb elkészített programot úgy, hogy a hallgató szakját is megjelenítse! Ehhez használd az alábbi táblázatban található információkat:
| Szak kódja | Szak neve |
|---|---|
| 1 | tömegkommunikáció szak |
| 2 | programozás és adatbázis kezelés szak |
| 3 | rajz és művészettörténet szak |
| 4 | jogi alapismeretek szak |
| 5 | biológia és kémia szak |
A programnak a fentebbi bemenetre tehát az alábbi kimenetet kellene produkálnia:
Add meg az azonosítót: 32011129074 Szakod: rajz és művészettörténet Születési éved: 2011
A programodat továbbfejlesztheted ezen kívül hibakezeléssel is - például amennyiben a szak kódja nem érvényes (0, vagy 5-nél nagyobb), akkor megjeleníthetsz egy hibaüzenetet! Hasonlóképp akkor is, ha az azonosítószám hossza nem megfelelő.
2. Feladat: Az adóazonosító jel egy magyarországon használt azonosító szám, amelyet magánszemélyek adóügyi azonosítására használnak. Ennek a 10 számjegyű kódnak a 2-6. számjegye az 1867 január 1.-től a személy születésének napjáig eltelt napok számát mutatja meg. Készíts egy programot, ami bekér egy adóazonosító jelet, majd kiírja, hogy hány nap telt el 1867. január 1. és a személy születésnapja között! (gyakorláshoz használhatod pl.: a 8480010000 kódot, amely esetén a programnak a 48001 értéket kell kiírnia!
3. Feladat: Egy iskolai totóversenyen a diákok a kapott 13 kérdésre adott válaszaikat egy darab szöveg formájában adják le, amely az 1, 2, és X karakterekből áll, pl.: 1X22X1XX12112. Készíts programot, amely bekéri egy csapat válaszait, valamint bekéri - szintén azonos formátumban - a javítókulcsot (azaz a helyes válaszokat), majd kiszámítja, hogy a tanuló hány kérdésre válaszolt helyesen! Példa a program kimenetére:
Diák megoldása: 1X22X1XX12112 Javítókulcs: 1XXXX21X22X12 Tanuló eredménye: 7 pont
4. Feladat Kérj be a felhasználótól egy dátumot, 8 karakteres, elválasztó karakter nélküli formátumban (pl.: 20250129), majd írd ki belőle külön az évet, hónapot, valamint a napot! Minta a program kimenetére:
Dátum: 20250129 Év: 2025 Hónap: 01 Nap: 29