Lectura de dades en Python

La lectura de dades en Python és, admetem-ho, massa difícil per als principiants. Per això, Jutge.org ofereix el mòdul jutge. 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 jutge funciona tant per Python 2 com per Python 3.

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

Instal·lació

Segons el vostre sistema i versió de Python, és possible que hagueu d’utilitzar pip3 enlloc de pip.

Ú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 jutge 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 jutge import read

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

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

from jutge 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 jutge 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 jutge 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, 2018

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