Forum >> Programmazione Python >> Files e Directory >> Problemi con implementazione algoritmo classi

Pagina: 1

Salve a tutti,




Sono in difficoltà con questo script relativamente semplice. Il problema è che non, avendoci fornito abbastanza materiale sulle classi (pur avendole studiate), non riesco a capire come gestirle correttamente. Per esempio, qui di seguito vi mostro la prima classe implementata(male)





class Leggi():

def __init__(self): #non modificate i parametri del costruttore

#se volete aggiungere codice fatelo qua sotto, se non dovete

#aggiungere codice, lasciate il pass qua sotto

pass




def transform(self, filename):

f=codecs.open(filename,'r',encoding='latin1')

lista=[]

linee=f.readlines()

f.close()

for line in linee:

token=line.rstrip('\n')

lista.append(token)




return lista





Per favore aiutatemi, sono disperato. Qui di seguito la consegna dell'implementazione.




DESCRIZIONE DEL/DEI FILE CON I DATI




Nota bene: la codifica dei file e' utf8 se non diversamente indicato




- numeri.txt Ogni riga del file contiene un simbolo di operazione

(i valori possibili sono tre: +, - e *) seguito da due valori numerici.

Simboli e valori numerici sono separati da spazi.

I numeri sono espressi in lettere es., cinque, otto, sette. I numeri

presenti nel file sono solo quelli compresi tra zero e nove, non

troverete numeri superiori al nove nel file.

Ogni riga del file termina con il carattere di a capo '\n'

- Ricordatevi di aprire/ispezionare il file con un editor diverso

dal Notepad di windows, perché quest'ultimo non gestisce

correttamente i caratteri di a capo.




DESCRIZIONE DELL'ESERCIZIO DA SVOLGERE

Implementate le classi seguenti:




Classe Leggi. La classe ha un metodo transform() che accetta come

parametro in ingresso il nome di un file (la struttura del file e' analoga

a quella di numeri.txt) e restituisce una lista di stringhe,

dove ogni stringa corrisponde ad una delle righe del file.

Ricordatevi di rimuovere i '\n' dalle stringhe.

Il file deve essere aperto dentro il metodo transform() e chiuso prima di

restituire i risultati.




Classe Converti. La classe ha un metodo transform() che accetta in

ingresso l'output del metodo transform() della classe precedente (una

lista di stringhe) e restituisce in uscita una lista di liste, come

nell'esempio seguente:

[ ['+', 3, 1], ['-', 5, 2], ['*', 4, 8], ... ].

Ognuna delle liste più interne contiene le informazioni presenti

in una riga del file. Il primo elemento di ogni

lista più interna deve essere una stringa, i due elementi successivi devono

essere valori interi. I numeri espressi come stringhe nel file (es. 'nove', 'tre')

devono essere convertiti nei corrispondenti numeri interi. Di fatto,

ogni lista più interna contiene il simbolo di un'operazione

seguito dagli operandi a cui deve essere applicata l'operazione.




Classe Calcola. La classe ha un metodo transform() che accetta in

ingresso l'output del metodo transform() della classe precedente

e restituisce in uscita una lista di valori interi. Ogni valore

intero è calcolato prendendo ognuna delle liste

[operazione, numero1, numero2] e l'operazione ai due numeri.

Per esempio, se al metodo transform() viene passata in ingresso la lista

[ ['+', 3, 1], ['-', 5, 2], ['*', 4, 8], ... ]

il metodo dovrà restituire come risultato

[4, 3, 32]


--- Ultima modifica di fritz in data 2018-04-11 18:13:46 ---
Allegati


Pagina: 1



Esegui il login per scrivere una risposta.