Lectura de dades en Python

La lectura de dades en Python és, admetem-ho, massa difícil per als principiants. Per això, es pot usar el mòdul easyinput. Aquest petit mòdul ofereix una única funció per llegir dades des de Python i és molt útil als problemes de Jutge.org. El mòdul easyinput funciona tant per Python 2 com per Python 3.

Aquesta lliçó explica com instal·lar i utilitzar el mòdul easyinput.

Instal·lació

Ús bàsic

Aquest mòdul export una funció read() que retorna el següent element (token) de l’entrada. El tipus d’aquest element s’ha de donar com a paràmetre:

En el cas que no hi hagi més elements disponibles, read() returna None. Excepte pels caràcters, els elements es separaten per paraules. Els blancs i salts de línia no es poden obtenir ja que read() els ignora.

La funció read() també admet un nombre variable de paràmetres. Si no hi ha cap paràmetre, per defecte s’entén que és str. Si es dóna més d’un paràmetre, torna una llista amb tants elements com es demanaven, cadascun del tipus corresponent, omplint la llista amb valors None si l’entrada s’ha esgotat.

Exemples

Programa que saluda

from easyinput import read

print("Com et dius?")
nom = read(str)
print("Hola " + nom + "!")

Fixeu-vos que amb aquest programa s’aconsegueix la primera paraula escrita per l’usuari, amb independència dels blancs o salts de línia que tingui davant o darrera. Això no es podria haver fet amb input()!

La instrucció nom = read(str) també s’hauria pogut escriure nom = read().

Programa que llegeix dos nombres i n’escriu la seva suma

from easyinput import read

x = read(int)
y = read(int)
print(x + y)

Es podria fer el mateix amb una sola lectura de dos elements:

from easyinput import read

x, y = read(int, int)
print(x + y)

Programa que llegeix una seqüència d’enters i n’escriu la seva suma

from easyinput import read

s = 0
x = read(int)
while x is not None:
    s = s + x
    x = read(int)
print(s)

Fixeu-vos que quan s’usa read() interactivament, cal senyalar el final de l’entrada amb control + d a Linux i Mac o amb control + z a Windows.

Programa que compta el nombre d’As a l’entrada

from easyinput import read

n = 0
c = read(chr)
while c is not None:
    if c == 'A':
        n = n + 1
    c = read(chr)
print(n)

Informació addicional

Es pot trobar una informació més exhaustiva sobre aquest mòdul a la seva documentació.


Fòrum







Lliçons.jutge.org
Jordi Petit
Universitat Politècnica de Catalunya, 2020

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