Függvények

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ó.

.join()

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))