• Nem Talált Eredményt

Szövegkezelés, szöveg szétvágása

In document oktatási segédanyag LibreLogo (Pldal 91-97)

Szövegkezelés, szöveg szétvágása

A szötvegek a programozás során karakterekből álló láncokként tárolódnak. A karakterláncokat idézőjelek közöti szötvegként adhatjuk meg.

k = „”

Ez egy üres karakterláncot jelent.

szó= „példa”

A karakterláncok sok dologban hasonlítanak a listákhoz, például hitvatkozha-tunk tvalamelyik sorszámú karakterére, ahogy hitvatkozhahitvatkozha-tunk tvalamelyik sorszá-mú listaelemre is.

ki szó[0]

ki szó[4]

A fenti két sor a szó első és ötödik karakterét írja ki. Tehát az is közös a lista és karakterlánc működésében, hogy a sorszámozást 0-tól kezdjük. Ugyanígy kiírat-hatjuk a szó utolsó karakterét is a listáknál már megismert módon:

ki szó[–1]

Emellet a fut szerkezetet is használhatjuk a karakterláncokon karakterenként tvaló tvégiglépkedésre. Így például egy szót kiírhatunk úgy, hogy minden egyes be-tűje egy különálló négyzet belsejébe kerüljön.

szó = „LibreLogo”

fut betű szó-ban [ négyzet 10 szöveg betű

tollatfel jobbra 90 előre 10 balra 90 tollatle ]

A karakterláncból részláncokat tvághatunk ki, ha a szögletes zárójelben meg-adjuk, hogy a karakterlánc hányadik karakterétől hányadik karakteréig létvő rész-láncra tvan szükségünk.

szó = „LibreLogo”

ki szó[0:5]; a szó[5] karaktert megelőző részlánc: „Libre”

ki szó[2:5]; a szó[2]-től a szó[5] karakter előttig lévőrészlánc: „bre”

ki szó[5:] ; a szó[5] karaktertől lévő részlánc: „Logo”

ki szó[:–1]; az utolsó karaktert megelőző részlánc: „LibreLog”

ki szó ; az eredeti szó: „Librelogo”

LibreLogoLibreLogLibreLoLibreLLibreLibrLibLiL

LibreLogo

1 2 3 4 5 6 szövegkezelés, szöveg szétvágása

Megjegyzés: Ez a művelet listák esetén is létezik, akkor eredményül részlistákat kapunk.

A részláncok segítségétvel elkészíthetjük például ezt a piramist:

szó = „LibreLogo”

amíg szó != „” [ címke szó szó = szó[:–1]

tollatfel előre 10 tollatle ]

A karakterláncokat egymás után fűzhetjük a + műtvelet segítségétvel. Erre akkor lehet szükség, ha több láncot szeretnénk egy szötvegdobozba, tvagy alakzat belsejé-be írni, tvagy a ki utasítással kiírni a képernyőre.

szó1 = „Libre”

szó2 = „Logo”

ki szó1+szó2 szó = szó1+szó2 címke szó

Számokat is átalakíthatunk karakterlánccá a lánc utasítást használtva, így pél-dául számjegyenként dolgozhatunk a számmal. A kötvetkező példában ez a szám 192*643, azaz 1234456:

szám = lánc 192 * 643 fut számjegy szám-ban [

négyzet 15 szöveg számjegy

tollatfel jobbra 90 előre 15 balra 90 tollatle ]

A karakterlánc hosszát, ahogy a listák elemszámát is, a darab utasítás segítsé-gétvel kaphatjuk meg:

Első sor.

Második sor.

szövegkezelés, szöveg szétvágása címke darab „példa”

Ha hosszabb karakterláncot helyezünk egy szötvegdobozba, akkor előfordul, hogy több sorba szeretnénk a szötveget írni. Szerencsére nem kell minden sor szá-mára külön szötvegdobozt készíteni, hanem elegendő sortörés karaktert írnunk a karakterlánc megfelelő helyére. Ennek jele \n:

címke „Első sor.\nMásodik sor.”

A karakterláncok tartalmazhatnak szóközöket is:

mondat = „Tetszőleges mondat lehet karakterlánc. Sőt ez és az előző mondat együtt is alkothat karakterláncot.”

A hosszabb karakterláncokkal tvaló munka során gyakran előfordulhat, hogy azokat szét kell szednünk rötvidebb karakterláncokká. A LibreLogóban erre tvan egy függtvény, amely tetszőleges karakternél széttvágja a karakterláncokat több részlánccá, amelyeket egy listában ad meg. Így a fenti mondat netvű karakterlánc széttvágható a „.” karakternél két karakterláncból álló listátvá a split()7 függtvény segítségétvel:

mondatlista = mondat.split(„.”)

ki mondatlista ; kimenet: [„Tetszőleges mondat lehet karakterlánc”, „ Sőt ez és az előző mondat együtt is alkothat karakterláncot”]

A split() függtvény a karakterlánc típus saját függtvénye, ezért kapcsoljuk egy pontal a karakterlánchoz, amelyre alkalmazni szeretnénk. Zárójelek közöt adjuk meg a „töréspontot”, tvagyis azt a karakterlánc-részletet, amelynek előfordulási helyein több részláncra tvágja az adot szötveget a split függtvény. Ha a split nem talál egy töréspontot sem a szötvegben, akkor az eredeti szötveget kapjuk tvissza egy egyelemű listában. Ha nem adunk meg paramétert a split-nek, akkor alapér-telmezés szerint a szóközöknél tválasztja szét a szötveget:

szavaklista = mondat.split()

ki szavaklista ; kimenet: [„Tetszőleges”, „mondat”, „lehet”, „karakterlánc.”, „Sőt”,

„ez”, „és”, „az”, „előző”, „mondat”, „együtt”, „is”, „alkothat”, „karakterláncot.”]

1 7 A „split”, magyarul „széthasít”, tvalójában egy Python függtvény. A LibreLogo ebben a 5

EZ EGY TETSZŐLEGES KARAKTERLÁNC ez egy tetszőleges karakterlánc Ez egy tetszőleges KARAKTERLÁNC

Ez Egy Tetszőleges Karakterlánc szövegkezelés, szöveg szétvágása

A split függtvény mellet totvábbi hasznos függtvények állnak rendelkezésünkre.

Például nagybetűssé tvagy kisbetűssé, tvagy akár nagy kezdőbetűssé alakíthatjuk a szötvegünket:

szavak = „ez egy tetszőleges KARAKTERLÁNC”

címke szavak.upper()

címke szavak.lower()

címke szavak.capitalize()

A széttvágás, a nagy kezdőbetűsítés és az összefűzés műtveletének segítségétvel a fenti szavak netvű karakterlánc minden szatvát nagy kezdőbetűssé alakíthatjuk a kötvetkező programmal:

szavak = „ez egy tetszőleges KARAKTERLÁNC”

szavak = szavak.lower() szavak = szavak.split() újszavak = „”

fut szó szavak-ban [

újszavak = újszavak + szó.capitalize() + „ ” ]szavak = újszavak[:–1]

címke szavak

Először a szavak karakterláncot csupa kisbetűssé alakítjuk, majd széttvágjuk a szóközök mentén, a kapot listát eltároljuk a szavak tváltozóban. Létrehozunk egy újszavak netvű üres karakterláncot, ehhez fogjuk hozzáfűzni a szatvak lista egyen-ként nagybetűssé alakítot szatvait. Minden szó után egy szóközt is hozzá kell fűz-nünk a szötveghez, emiat az újszavak karakterlánc tvégére kerül egy felesleges szóköz, azt a részlisták műtveletétvel letvágjuk, majd a kapot új karakterláncot tvisszatesszük a szavak tváltozóba.8

1 8 Számos rötvidítésre tvan lehetőség. A típusműtveletek (metódusok) sorozata például egy programsorba is összetvonható: szavak = szavak.lower().split(). Sőt, a title() karakterlánc-metódus pont azt tvégzi el, amit a programunk nagy része, a karakterlánc szatvainak nagykezdőbetűsítését. Így a teljes programunk átírható egy programsorba: címke „ez egy

szövegkezelés, szöveg szétvágása Ahogy azt már látuk, a karakterláncok kezelése sok mindenben megegyezik a listákétval. A rendez függtvény sem kitvétel, karakterlánc esetében tvisszaadja a ka-rakterlánc karaktereinek rendezet listáját.

Feladat: Készítsünk programot, amely eldönti, hogy két szó egymás anagram-mája-e (betűik sorrendjét megtváltoztattva megkaphatjuk-e az egyiket a másikból)!

Ez a feladat a 2010. októberi éretségi programozási feladatának egy részfelada-ta tvolt. A feladat kitválóan megoldható rendezet listák segítségétvel. A megoldás eltve a kötvetkező. Mindkét szó (azaz karakterlánc) betűit rendezet listátvá alakít-juk a rendez függtvénnyel. A két rendezet lista pontosan akkor fog megegyezni, ha a két szó egymás anagrammája tvolt.

szó1 = be „Add meg az első szót!”

szó2 = be „Add meg a második szót!”

ha szó1 != szó2 és (rendez szó1) == (rendez szó2) [ ki „Anagrammák.”

][

ki „Nem anagrammák.”

]

A karakterláncokkal kapcsolatos műtveleteknek majd a szötveges fájlokkal tvaló munka során tvesszük igazán nagy hasznát, erről részletesebben az utolsó két feje-zetben oltvashatsz.

VAKÁCIÓAKÁCIÓKÁCIÓÁCIÓCIÓIÓÓ

Harmatcseppben fürdik A szerény ibolya

Mellete öltözik Az esti tviola

Lila szoknya libben A kökörcsin lányon Abban fog táncolni A pillangó bálon Szitvártvány hídján Lila szín tvárja Legyen a leglilább Virág a párja szövegkezelés, szöveg szétvágása

Feladatok

64) Készíts a „VAKÁCIÓ” szötvegből piramist!

65) Oltvass be egy szötveget, majd írd ki szatvanként különböző színnel! A fel-adatban segítséget jelent a címke2 utasítás, amellyel a teknőc az előző címke2 uta-sítással kiírt szötveg után írja ki az új szötveget.

66) Jelenítsd meg Tóth Ágnes Lila vers című költeményét úgy, hogy a színeket jelentő szatvak (tviola, ibolya, lila) a színnek megfelelő betűszínűek legyenek!

Színezd a szötveget szatvanként különböző színűre!

In document oktatási segédanyag LibreLogo (Pldal 91-97)