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

Do you need help?

aiuto con hw4obb

s
simone.lioy (1420 points)
28 30 39
in HW4 obbligatorio by (1.4k points)
Ragazzi vi chiedo aiuto prima della consegna, leggo tutto il file per intero, poi leggo riga per riga togliendo tutti i caratteri non alfabetici da formare cosi una stringa unica spezzettare in lunghezza m per trovarmi la parola nascosta. una volta trovata mi rimane il problema di andarla a trovare nel file perchè ci sono gli spazi e gli a capi che modificano tutto. potete aiutarmi gentilmente?

6 Answers

E
Edward (25950 points)
3 4 172
by (26.0k points)
Non devi andare a trovarla nel file.

Sarebbe meglio se ti salvassi le stringhe del file in una lista (senza caratteri speciali), così poi puoi andare ad iterare nella lista normalmente
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
che proprio questo cerco però sono bloccato, perchè se tolgo tutti i caratteri speciali mi esci una stringa lunga, oppure ho provato in altri modi ma comunque l parole spezzate rimangono spezzate e non so come unirle
E
Edward (25950 points)
3 4 172
by (26.0k points)
edited by
Devi leggere il file riga per riga

Quando c'è una linea vuota (in realtà una linea con un solo \n) sai che le stringhe precedenti formano una stringa (che puoi aggiungere alla lista).
E ripeti fino alla fine del file.
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
esatto ma comunque non riesco a metterle insieme
fc-dev (16450 points)
16 20 34
by (16.5k points)
edited by
Fatti una variabile temporanea in cui ti salvi la linea corrente.
Ogni volta che leggi una linea e non è vuota la aggiungi a quella variabile.

Se trovi una linea vuota significa che hai finito la parola, quindi puoi aggiungere quella variabile alla lista e resettarla.
a
a.pietroluongo (11250 points)
20 39 131
by (11.3k points)
edited by
Dovresti creare una lista delle stringhe senza /n

Vedi questi metodi: https://www.w3schools.com/python/python_ref_string.asp
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
ho visto, ma non trovo nulla di adatto
L
Lolloxox31 (1610 points)
14 16 26
by (1.6k points)
io ho risolto questo problema con la concatenazione delle stringhe e le slice
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
infatti tutto questo mi ha portato a quello che hai detto tu. un piccolo aiutino?
L
Lolloxox31 (1610 points)
14 16 26
by (1.6k points)
Si, se hai già le stringhe memorizzate da qualche parte, io ho usato una lista, a quel punto è semplice non cè bisogno di rileggere il file.....altrimenti vai a rifare lo stesso procedimento che hai fatto per trovarti le stringhe del file, da li usi la find in un for e hai fatto
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
si si questo è al completamento di tutto, ma le parole sono ancora staccate
LUPOSaymon (2730 points)
2 3 27
by (2.7k points)

Ti conviene mettere tutte le stringhe che ottieni in un' unica lista. Per fare ciò, ti basi sul controllo dei caratteri e vedi quando ci sono gli \n.

Basati su queste osservazioni:

Quando il carattere è un "\n": devi controllare se il carattere che lo precede ( o lo segue) è un altro "\n"

  • Quando vi è un solo "\n" preceduto da una lettera: indica che la stringa non si interrompe, quindi dovresti solo sostituire lo "\n" con un carattere vuoto ("") e continuare a concatenare le stringhe
  • Quando vi è un "\n" preceduto da un altro "\n": Quando accade ciò, significa che la stringa che stavi analizzando è completa, e ne inizia una nuova

Spero di esserti stato utile :D 

s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
quello che manca è come vedere se precede o segue una lettera oppure \n. lo so che è una stronzata ma non mi viene proprio in mente
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
finalmente ci sono riuscito ma devo migliorarlo perchè va in timeout
Tommaso Sgroi (12990 points)
10 11 91
by (13.0k points)
Se tu usi il metodo file.read() puoi portare tutte le stringhe presenti in una unica, dopodiché basta andare a lavorare su quella stringa spezzandola in elementi di una lista. Ad esempio sai che quando c'è un'altra parola i caratteri che le separano sono '\n\n', da qui basta rivedere i metodi delle stringhe per trovare una soluzione ideale !!
Antares (7770 points)
5 6 41
by (7.8k points)

Un altro meccanismo che puoi usare per creare la lista di parole è la concatenazione delle stringhe tramite l'ausilio di una variabile booleana.