Do you need any help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2021-22 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2021-22 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

VIDEOLEZIONI DEL CORSO DI FONDAMENTI DI PROGRAMMAZIONE AA20-21

PROGRAMMING COURSE VIDEOCONFERENCES AY20-21

aiuto con hw4obb

s
simone.lioy (1420 points)
23 30 39
asked Nov 17, 2019 in HW4 obbligatorio by simone.lioy (1,420 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)
2 4 172
answered Nov 17, 2019 by Edward (25,950 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)
23 30 39
commented Nov 17, 2019 by simone.lioy (1,420 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)
2 4 172
commented Nov 17, 2019 by Edward (25,950 points)
edited Nov 18, 2019 by Edward
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)
23 30 39
commented Nov 17, 2019 by simone.lioy (1,420 points)
esatto ma comunque non riesco a metterle insieme
fc-dev (16450 points)
12 20 34
commented Nov 17, 2019 by fc-dev (16,450 points)
edited Nov 18, 2019 by fc-dev
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)
15 38 131
answered Nov 17, 2019 by a.pietroluongo (11,250 points)
edited Nov 17, 2019 by a.pietroluongo
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)
23 30 39
commented Nov 17, 2019 by simone.lioy (1,420 points)
ho visto, ma non trovo nulla di adatto
L
Lolloxox31 (1610 points)
11 16 26
answered Nov 17, 2019 by Lolloxox31 (1,610 points)
io ho risolto questo problema con la concatenazione delle stringhe e le slice
s
simone.lioy (1420 points)
23 30 39
commented Nov 17, 2019 by simone.lioy (1,420 points)
infatti tutto questo mi ha portato a quello che hai detto tu. un piccolo aiutino?
L
Lolloxox31 (1610 points)
11 16 26
commented Nov 17, 2019 by Lolloxox31 (1,610 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)
23 30 39
commented Nov 17, 2019 by simone.lioy (1,420 points)
si si questo è al completamento di tutto, ma le parole sono ancora staccate
LUPOSaymon (2730 points)
1 3 27
answered Nov 17, 2019 by LUPOSaymon (2,730 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)
23 30 39
commented Nov 19, 2019 by simone.lioy (1,420 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)
23 30 39
commented Nov 19, 2019 by simone.lioy (1,420 points)
finalmente ci sono riuscito ma devo migliorarlo perchè va in timeout
Tommaso Sgroi (12990 points)
6 11 91
answered Nov 18, 2019 by Tommaso Sgroi (12,990 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
answered Nov 18, 2019 by Antares (7,770 points)

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