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

Do you need help?

Esercizio 3 consigli

alessioclemente (19640 points)
19 67 153
in Es3 by (19.6k points)
closed by
Consigli su come fare l'esercizio 3 in modo più veloce? Per come è adesso il mio programma scorre le parole finché non le trova nell'intervallo [0:lunghezza parola] e quando la trova la cancella dal testo
707 views
closed with the note: deadline passed

2 Answers

a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
Perché perdere tempo a cancellarlo quando puoi semplicemente avanzare. Ti consiglio le salice per avanzare e i dizionari per memorizzare le statistiche di rilevamento delle parole in lista. Devo decidere cosa memorizzare e come utilizzare i dati memorizzati. Devi decidere anche i criteri da adottare nell'avanzamento.
l
leoli (2930 points)
0 5 19
by (2.9k points)

Potresti usare i vari metodi delle stringhe sulle parole nella lista per estrarre i dati dal testo senza bisogno di cancellarle ogni volta.

Ad esempio potresti usare testo.count(parola) per sapere quante occorrenze ci sono della parola nel testo oppure testo.find(parola) per trovare l'indice in cui appare per la prima volta la parola nel testo.

Guarda i metodi descritti in questo link.

alessioclemente (19640 points)
19 67 153
by (19.6k points)
Count(parola non mi funziona benissimo quando ci sono le intersezioni di parole :/
l
leoli (2930 points)
0 5 19
by (2.9k points)
In che senso intersezioni?
Il testo del problema specifica che non ci sono questi casi... io ho usato questi metodi e funzionano bene
alessioclemente (19640 points)
19 67 153
by (19.6k points)
tipo "lanavela" potrebbe contarmi nave
l
leoli (2930 points)
0 5 19
by (2.9k points)
Si è vero ma devi ricordarti che il testo è formato da concatenazioni di parole presenti nella lista quindi se nave non è nella lista non la conta e quindi il problema non c'è se invece abbiamo una situazione del tipo:
lista = ['nave','lana','vela'] testo = 'lanavela' conterà che avremo 1 volta nave 1 volta vela e 1 volta lana
Nei test che ha dato il prof questa situazione non si verifica o non influisce sul risultato però effettivamente sta venendo pure a me il dubbio che non dovrebbe essere cosi...
FrancescoMauto (1000 points)
6 14 20
by (1.0k points)
Invece non e` proprio cosi. Nel testo dell'es3 uno degli esempi dice: "se lista=['ala','cena','elica','nave','luce','lana','vela']
  - con testo='lucenavelanavelanaveelica' la risposta e' (['luce','nave','lana','vela','elica'],'nave')
  e ls diviene ['ala','cena']". Possiamo notare come,nelle prima parte della stringa 'lucenave' ci siano tre parole,ossia 'luce','cena','nave'.
Nell'esempio  pero` cena non viene contato e rimane nella lista di partenza. Ora mi chiedo,e` un errore del prof o bisogna anche controllare se due parole vicine formano una terza parola,come in questo caso?
alessioclemente (19640 points)
19 67 153
by (19.6k points)
Beh è un caso che formino una terza parola, e quindi non dovrebbe essere contata