fritz
Profilo di
Nome | fritz |
---|---|
Indirizzo email | n/a |
Messaggi | 1 |
-
- 2018-04-11 18:11:48
- Problemi con implementazione algoritmo classi
- Forum >> Programmazione Python >> Files e Directory
- 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 ---