Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Leggere riga per riga

1946981 (3070 points)
5 15 35
in HW4 obbligatorio by (3.1k points)
Mi chiedevo se fosse possibile leggere il file dell'homework 4 una riga per volta, in modo da analizzare ciascuna riga e poi confrontarle tra di loro. Ci ho provato ma la funzione alla fine come return mi dà solo l'ultima riga, anche se mettendo print in mezzo al ciclo mi dà i risultati riguardanti tutte le righe. Ho sbagliato qualcosa o devo per forza leggere il file tutto insieme?

Grazie.
309 views
closed

2 Answers

Best answer
L
Lorenzo Spataro (2710 points)
0 0 12
by (2.7k points)
selected by
Ciao, non mi è chiaro che funzione hai usato e in che maniera hai letto il file, comunque posso consigliarti due modi per salvarti in una lista le varie righe del poema e poi ciclare su di essa:

Il primo consiste nel leggere tutto il file con la funzione read() e poi separare la stringa di tutto il file in più stringhe ogni volta che incontri il carattere per andara a capo ('\n'), così avrai una lista di stringhe che sarà proprio una lista di tutte le righe del file.
Il secondo modo è quello di utilizzare la funzione readlines() che ti ritorna una lista di stringhe le quali corrispondono proprio alle linee del file (attenzione però che in ogni stringa sarà compreso anche il carattere '\n').
1946981 (3070 points)
5 15 35
by (3.1k points)
Avevo usato readline() perché con readlines() avevo dei problemi, adesso proverò anche con read() come mi hai suggerito tu, grazie
L
Lorenzo Spataro (2710 points)
0 0 12
by (2.7k points)
edited by
Che tipo di problemi? Comunque per quanto riguarda readline() è normale perchè quella funzione, ogni volta che viene invocata, legge la riga successiva quindi se vuoi usare quella ti conviene leggere ogni riga e salvarla in una lista (all'interno del ciclo) se poi dopo hai intenzione di confrontarle.
1946981 (3070 points)
5 15 35
by (3.1k points)
Sto leggendo il file con read() adesso, è possibile che mi dia problemi perché considera una linea vuota alla fine del file?
L
Lorenzo Spataro (2710 points)
0 0 12
by (2.7k points)
Sì te la considera perché c'è un a capo anche all'ultima riga di ogni file, ti basta rimuoverla dalla lista con il metodo remove (passandogli come elemento una stringa vuota)
1946981 (3070 points)
5 15 35
by (3.1k points)
Avevo appena risolto, ho ciclato considerando una riga in meno, grazie comunque
L
Lorenzo Spataro (2710 points)
0 0 12
by (2.7k points)
Di nulla, però sono curioso di capire che problemi avessi con readlines(), avevi passato il parametro 'r' in open()?
1946981 (3070 points)
5 15 35
by (3.1k points)
No, solo non riuscivo a dividere in righe
MRinaudo (3660 points)
22 40 50
by (3.7k points)

Ciao 1946981,

ti conviene prima spezzare il testo per righe, utilizzando metodi delle stringhe, e poi le metti in una lista se vuoi.

Saluti.