Fitxer matrius¶
Dissenyeu la funció separa(s) que donat un string s que codifica enters positius separats per un o més espais en blanc, retorna la llista dels enters codificats en el string. Utilitzeu el mètode
str.split()per separar el string. Per exemple:>>> separa(' 5 6 78 89 345 1 2 0 0 ') [5, 6, 78, 89, 345, 1, 2, 0, 0]
Dissenyeu la funció ajunta(s) que donada una llista d’enters, retorni un string que codifiqui els enters en el mateix ordre que la llista separats amb
' | '. Utilitzeu el mètodestr.join(). Per exemple:>>> ajunta([5, 6, 78, 89, 45, 1, 2, 0, 0]) '5 | 6 | 78 | 89 | 45 | 1 | 2 | 0 | 0')
Esbrineu com podríeu modificar la funció per tal que cada enter ocupi exactament el mateix nombre d’espais. Per això, repasseu les eines de format i proveu aquest exemple:
>>> s = '{:5d} | {:5d} | {:5d}'.format(23, 1, 456) >>> s ' 23 | 1 | 456'
Un fitxer conté les dades d’una matriu de nxm enters. Cada línia del fitxer està formada per n valors separats entre sí per un o més espais en blanc. Dissenyeu la funció llegirMatriu(nomfitxer) que llegeix les dades de la matriu del fitxer de nom donat. La funció ha de retornar una llista de n files essent cada fila una llista de m enters. Cal utilitzar la funció separa dissenyada abans. Per exemple, si el fitxer “matriu.txt” conté el següent:
0 0 0 0 10 12 1 5 0 0 0 0 2 4 12 14 13 66 5 0 0 0 0 0 .. code:: python >>>> llegirMatriu('matriu.txt') [[0, 0, 0, 0], [10, 12, 1, 5], [0, 0, 0, 0], [2, 4, 12, 14], [0, 0, 0, 0], [13, 66, 5, 0], [0, 0, 0, 0]]
Dissenyeu la funció escriureMatriu(nomfitxer, matriu) que donat un nom de fitxer i donada una matriu d’enters de valor comprès entre 0 i 99, representada per una llista de llistes, escriu la matriu en el fitxer, una línia per fila i, per cada fila, els valors separats amb
' | '. Cal utilitzar la funció ajunta dissenyada abans.Exemple de contingut de fitxer escrit per la matriu [[10, 12, 1, 5],[2, 4, 12, 14], [13, 66, 5, 0]]:
10 | 12 | 1 | 5 2 | 4 | 12 | 14 13 | 66 | 5 | 0
Dissenyeu la funció llistaZero(llista) que donada una llista d’enters retorni True si tots els valors de la llista són iguals a zero i False en cas contrari.
Dissenyeu la funció impura eliminarFilesZero(matriu) que elimina de la matriu totes les files formades únicament per valors zero.
Dissenyeu la funció tractar(nom1, nom2) que donats dos noms de fitxers tals que el primer conté dades d’una matriu, llegeix la matriu, n’elimina les files buides i escriu la matriu modificada en el segon fitxer. Cal utilitzar les funcions dissenyades en els exercicis anteriors.