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.

Homework 2 Esercizio 1

alessioclemente (19640 points)
16 67 153
in Es1 by (19.6k points)
recategorized by
Salve, ho creato delle funzioni che cercano la parola in ogni direzione, ( gli passo l'indice iniziale con index), ma quando vado per esempio a cercare una parola verso destra partendo dall'ultima cella, ma da list index out of range. Visto che tutto questo codice è in un while, non vorrei mettere un if per ogni funzione per controllare se c'è spazio per cercare la parola... come posso fare?
578 views
closed

2 Answers

Best answer
Xriuk (13590 points)
6 24 116
by (13.6k points)
selected by

Con quale condizione regoli il tuo while? Da sinistra a destra l'indice non deve arrivare ad essere uguale alla lunghezza della lista. Da destra a sinistra l'indice non deve arrivare a -1.

alessioclemente (19640 points)
16 67 153
by (19.6k points)
Usando index, ritorna un errore e non -1, purtroppo.
Xriuk (13590 points)
6 24 116
by (13.6k points)

Ah, non avevo capito che usavi il metodo .index() comunque l'eccezione out of range non si riferisce al metodo, si riferisce al fatto che tu vai fuori dai limiti della griglia (griglia[y][x]), controlla bene il messaggio di errore e la riga alla quale si riferisce

alessioclemente (19640 points)
16 67 153
by (19.6k points)
Si, se index avesse ritornato - 1 non avrei questo problema perché non ci sarebbero errori nel cercarlo. Però si, l'errore index out of range  è quello che dici, mi chiedevo se c'era un modo migliore per andare avanti senza appesantire ulteriormente il codice con dei controlli sulla lunghezza
Xriuk (13590 points)
6 24 116
by (13.6k points)
Non conoscendo nè il tuo codice nè la tua logica non ti saprei aiutare. L'unica cosa che mi sento di suggerire è che puoi realizzare una tua funzione index dove controlli che l'indice esista effettivamente, altrimenti puoi restituire None oppure -1
alessioclemente (19640 points)
16 67 153
by (19.6k points)
Grazie, proverò!
p
pietrobrega (4460 points)
4 13 42
by (4.5k points)
Ciao potresti considerare l'uso di try e except...però bisogna fare attenzione...
alessioclemente (19640 points)
16 67 153
by (19.6k points)
Li ho anche usati... credo sia necessario effettuare un controllo sulla lunghezza che però appesantirebbe il programma :/
p
pietrobrega (4460 points)
4 13 42
by (4.5k points)
Prova a scorrere fino all'ultima riga e colonna senza superare il massimo. Se invece torni indietro arriva fino al primo elemento