Szélsőérték-kiválasztás

Az SMS szavak című feladat negyedik lépésében ki kell választanunk egy lista leghosszabb szavát. Nincs jelentősége annak, hogy ezt a lista melyik helyén találjuk meg, így iterálhatunk érték szerint.

A klasszikus megoldás tehát:

_(4)

maxw= ''
for word in l_wds:
    if len(word)>len(maxw):
        maxw= word
print('A leghosszabb tárolt szó: ', maxw, '; ennek hossza: ', len(maxw), ' karakter.', sep= '')

Maximumot azonban a python nyelv max() függvényével is kereshetünk (minimumot ennek megfelelően a min() függvénnyel): ezek argumentuma –éppen úgy mint a rendezés esetén– lehet például string, lista vagy vektor.

Mivel az argumentumlista túl hosszú, a sort a \ karakterrel félbeszakítjuk, aztán folytatjuk; emlékeztetünk egyúttal az ékezetes betűk problémájára is:

>>> max('nyugotifelsőszombatfalva')
'ő'
>>> max(['izsa', 'bazsi', 'balázs', 'balázsd', 'alsózsid',\
... 'alsójózsa', 'balázsszeg', 'alsópozsgás', 'alsógörzsöny', 'balatonbozsok',\
... 'alsószelezsény', 'almásbalázsháza', 'felsőbalázsfalva', 'alsószenterzsébet', 'zsilymaczesdparoseny'])
'zsilymaczesdparoseny'

E függvények argumentumai között azonban azt is megadhatjuk, hogy milyen függvény határozza meg a rendezendő elemek sorrendjét:

>>> min(['izsa', 'bazsi', 'balázs', 'balázsd', 'alsózsid',\
... 'alsójózsa', 'balázsszeg', 'alsópozsgás', 'alsógörzsöny', 'balatonbozsok',\
... 'alsószelezsény', 'almásbalázsháza', 'felsőbalázsfalva', 'alsószenterzsébet', 'zsilymaczesdparoseny'],\
... key= len)
'izsa'

Ezek után az előző lépés más megoldása:

_(4)

maxw= max(l_wds, key=len)
print('A leghosszabb tárolt szó: ', maxw, '; ennek hossza: ', len(maxw), ' karakter.', sep= '')

Megszámolás

Az ötödik lépésben kért megszámoláshoz nincs szükségünk új ismeretre:

_(5)

n_shw= 0
for word in l_wds:
    if len(word)<=5:
        n_shw+= 1
print('A rövid szavak száma:', n_shw)