Az érettségi feladatok megoldása során az egyes lépések előtt ki kell írnunk, hányadik egységnél tartunk. Írjunk erre egyszerű függvényt, mely értéket sem ad vissza:
def _(item): print('\n', item, '. feladat:\n', sep='')
Az SMS szavak című feladat első két lépésében azt kell megállapítanunk, hogy egyes karakterekhez melyik számjegy, illetve egyes szavakhoz melyik számsorozat tartozik egy (hagyományos) mobiltelefon beillentyűzetén (inf_e_20070516_m_04). Az első kérdéshez készítsünk szótárat, a másodikhoz írjunk függvényt (mely az előbbi szótár segítségével építi föl a visszaadandó értéket, a szóhoz tartozó számsorozatot):
def f_wc(word): code= '' for lttr in word: code+= d_ln[lttr] return code keys= 'abcdefghijklmnopqrstuvwxyz' vals= '22233344455566677778889999' d_ln= {} for i in range(len(keys)): d_ln[keys[i]]=vals[i]
(A függvényt s a szótárat fordított sorrendben is definiálhattuk volna.)
Figyeljük meg: ahhoz, hogy a szótárba kulcs-érték párt írhassunk, előzőleg létre kellett hoznunk azt, most éppen üresen. Ez már csak azért is szükséges, mert az értékadás formailag megegyezik a listák esetén látottakkal: ha az első elem beillesztését nem előzné meg a lista vagy a szótár létrehozása, nem lehetne tudni, melyik adatszerkezetről van szó.
A .split() metódus felhasogatott egy stringet, s az eredményt egy listában adta vissza. Ennek természetes párja a stringek .join() metódusa: ennek segítségével egyetlen stringgé fűzhetjük össze (például) egy lista stringjeit:
>>> '+'.join(['2', '3', '5']) '2+3+5' >>> '; '.join(['nagypalugya és gálfalu', 'okolicsnó és sztosháza', 'szépkenyerűszentmárton']) 'nagypalugya és gálfalu; okolicsnó és sztosháza; szépkenyerűszentmárton'
Így az előző függvény tömörebben:
def f_wc(word): return ''.join([d_ln[lttr] for lttr in word])
A .join() metódust tehát azzal a stringgel kell használnunk, amely majd az összefűzendő elemek közé kerül: ez lehet egy- vagy többkarakteres, illetve lehet üres string is. (Figyeljük meg továbbá, hogy a metódust nem változóval, hanem stringkonstanssal hívtuk meg.)
Ezek után a feladat első két lépése:
_(1) lttr= input('Kérem, adjon meg egy betűt: ') print('A betűhöz tartozó kód:', d_ln[lttr]) _(2) word= input('Kérem, adjon meg egy szót: ') print('A bevitelre szolgáló számsor:', f_wc(word))