Aplicació: Llargades de paraules

Aquesta lliçó presenta un programa per llegir un poema i obtenir-ne algunes estadístiques sobre la llargada de les seves paraules.

Enunciat i exemple

Donat un poema, suposem que estem interessats a saber quina n’és la paraules més llarga, quantes paraules conté, i quina n’és la llargada mitjana (en nombre de lletres).

Per exemple, en el cas que la nostra entrada fós

quan els oques van al camp la primera va al davant
la segona va al darrera i despres ve la tercera

hauríem d’obtenir com a sortida

nombre de paraules: 21
llargada mitjana: 3.7619
paraula més llarga: primera

Si hi ha diverses paraules amb el mateix nombre màxim de lletres, cal escriure’n una qualsevol.

Solució

Per resoldre aquesta tasca, considerarem que el poema consisteix en una seqüència no buida de paraules. Per tant, utilitzem un bucle

for paraula in tokens(str):
    ...

per tal de poder tractar totes les paraules una rera l’altra. Afortunadament, la funció tokens() aplicada a strs ja funciona per paraules (tot entenent que estan separades per blancs o salts de línies).

Dins del bucle, només ens cal mantenir la informació necessària per poder donar les respostes al final del programa, quan ja s’hagin processat totes les paraules. Per això, usarem les variables següents:

En sortir del bucle, només cal reportar els valors calculats.

El programa sencer queda doncs així:

from yogi import tokens

def main():
    # inicialitzacions
    nombre_paraules = 0
    suma_llargades = 0
    paraula_mes_llarga = ''
    # bucle principal per cada paraula de l'entrada
    for paraula in tokens():
        nombre_paraules = nombre_paraules + 1
        suma_llargades = suma_llargades + len(paraula)
        if len(paraula) > len(paraula_mes_llarga):
            paraula_mes_llarga = paraula
    # escriptura del resultat
    print('nombre de paraules:', nombre_paraules)
    print('llargada mitjana:', suma_llargades /nombre_paraules)
    print('paraula més llarga:', paraula_mes_llarga)


if __name__ == '__main__':      
    main()

Cal dir que aquest programa només funciona correctament si el poema té almenys una paraula, perquè altrament la llargada mitjana no estaria ben definida.




Lliçons.jutge.org
Jordi Petit, Salvador Roura
Universitat Politècnica de Catalunya, 2023

Prohibit copiar. Tots els drets reservats.
No copy allowed. All rights reserved.