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

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 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 2023-24 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.

hw1 Esercizio 3

R
Rosslyn (260 points)
1 4 7
in Es3 by (260 points)
closed by
salve a tutti, non so se il mio approccio è corretto, per l'esercizio 3 non sto usando dizionari. Mi scorro tutto il "testo", e se trova un match con le parole in "lista", aggiunge il risultato ad una nuova lista, e questo mi funziona. Il problema però è che devo far ritornare una lista in cui le parole siano in ordine di occorrenza, a me invece le da in ordine di "lista", (esempio, se la prima occorrenza in lista è "gatto", e gatto viene trovato nel "testo", inserisce nella nuova lista "gatto", anzichè "cane"(prima parola del "testo" )). Come posso evitarlo e metterle in ordine di occorrenza nel "testo" (come richiesto nell'homework)? grazie
578 views
closed with the note: answered

3 Answers

d
doviscarcelli (920 points)
1 2 6
by (920 points)
Io ti consiglierei di vedere se il "pezzo" di testo che hai preso è nella lista, e non il viceversa (ovvero la parola della lista è nel pezzo di testo), e quindi aggiungerlo. In questo modo dovrebbe aggiungere alla lista le parole che appaiono in ordine nel testo.
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
con il tuo ragionamento ogni volta che nel testo, scorrendolo, trovi una parola questa la aggiungi ad una nuova lista. quest'ultima quindi riporterà le parole in ordine in cui le hai trovate, non vedo dove sia il problema. poi hai scritto che cane sta nel testo ma questo non è vero. Rileggi meglio la traccia ma il tuo ragionamento è giusto. ti consiglio anche di fare un controllo prima di aggiungere le parole trovate nella lista che devi mandare in uscita perchè se quella parola già è presente puoi 'contarla' ma non aggiungerla
R
Rosslyn (260 points)
1 4 7
by (260 points)
si scusa, "cane" non sta nell'esempio del prof ma in un'altra stringa che ho provato ad usare (per fare vari testi fuori dal prompt anaconda). Comunque il problema, come dice doviscarcelli, è che con il mio metodo mi aggiunge i valori in lista, ma non nell'ordine di come sono in "testo" ma nell'ordine di come sono in "lista". Ho provato anche a scorrere "testo" e confrontarlo con i valori in "lista", ma mi restituiva lo stesso risultato, probabilmente non l'ho fatto nel modo corretto.
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
per risolvere il problema secondo me dovresti 'iterare' le parole della lista e 'controllare' a ogni ciclo se la parola iterata in quel momento è ad inizio testo; se è così allora la aggiungi alla lista (ma ricordati il suggerimento che ti ho dato prima). così sicuramente otterrai la lista con le parole in ordine di come compaiono nel testo e senza ripetizioni
marco.giuliani (23860 points)
2 13 62
by (23.9k points)
Fai un controllo dove verifichi se la parola trovata è nella nuova lista. Se è già presente, vai avanti col codice, altrimenti la aggiungi.

Così facendo, ogni parola verrà messa una volta sola, e le parole della nuova lista saranno in ordine di apparizione.