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.

Problema con .find()

D
Dave (1010 points)
14 26 33
in Es1 by (1.0k points)
Buonasera!

Sto avendo un problema con l'ultimo test del grader.Infatti ho notato  che quando viene ricercata la sottostringa "no" il programma considera tutte le sottostringhe in cui compare "no".Per esempio "non", "sono" ecc... Ho impostato la condizione di ricerca con .find()!=-1.Come posso risolvere?
697 views
closed

4 Answers

Best answer
F
FrancescoSanetti (1130 points)
2 4 11
by (1.1k points)
selected by
Questo succede perché stai cercando la parola "no" direttamente in una stringa, prova a fare lo split di ogni paragrafo e poi cerca la parola nella lista risultante, così sarai sicuro che tutte le parole che non combaciano alla perfezione verranno escluse.
D
Dave (1010 points)
14 26 33
by (1.0k points)
Così facendo sorge però il problema della punteggiatura.Ovvero le parole seguite per esempio da un punto senza lo spazio non verranno calcolate.
F
FrancescoSanetti (1130 points)
2 4 11
by (1.1k points)
Basta rimuoverla, python nella libreria string contiene la stringa punctuation, con questa hai a disposizione tutte le sottostringhe da rimpiazzare con stringhe vuote
francesco.dev (33560 points)
22 51 129
by (33.6k points)
Ottima risposta :)
F
FrancescoSanetti (1130 points)
2 4 11
by (1.1k points)
Grazie (rofl)
Lazy_XM (590 points)
3 7 15
by (590 points)

Essendo che stai cercando solo la sottostringa 'no' e non le parole che contengono 'no', devi cercare un metodo che isola il 'no' e poi cercarlo.

Magari potresti metterlo tra due spazi e poi usi la funzione count() per trovarlo.

Spero ti abbia aiutato abbastanza.

D
Domenicobrz (1470 points)
3 9 19
by (1.5k points)
Aggiungo che inserendo il "no" fra due spazi e cercando la parola   " no "  questa ricerca fallirebbe se il no si trovasse all'inizio o alla fine della riga
francesco.dev (33560 points)
22 51 129
by (33.6k points)
edited by
Ciao!
Sicuramente non puoi lavorare sulle stringhe, altrimenti la maggior parte delle parole che cerchi le troverai perché sono semplicemente presenti come subparole nelle vere parole.

Fatta questa premessa riprendo il discorso che ti hanno consigliato molti: usa le LISTE. Usa le liste per fare un controllo del genere!

Però ricorda che una volta che usi una lista devi togliere tutta la punteggiatura, ovvero data una lista devi togliere tutti i suoi elementi diversi dai caratteri dell'alfabeto!
Un semplice for con un if ti risolverà tale problema.

Sperando di averti aiutato,
- Francesco Pio Scognamiglio
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
L'abbiamo fatto a lezione /esercitazione