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 ripetizione ciclo es n°2 dell' homework

A
AndreaCipollini (300 points)
1 4 10
in Es2 by (300 points)

Ciao a tutti!

Sul finire del secondo esercizio dell' homework mi sono imbattuto nel problema di dover ripetere le istruzioni che ho implementato, nel caso, al finire di un primo ciclo, il robottino possa muoversi entro i 360° dalla sua ultima posizione (all'inizio avevo capito che non si potesse girare per più di 360° dalla posizione iniziale). Ho pensato di usare un while True che contenesse tutte le istruzioni, ho poi implementato i vari try, except nel caso uscisse dall'immagine ma alla fine quando ricomincia il ciclo di istruzioni, mi prende coordinate sbagliate del pixel su cui effettuare il primo controllo, in particolare mi prende un altra x, mentre la y è giusta. Inoltre, se aggiusto manualmente la coordinata x, mi va in timeout... suggerimenti sulla situazione? indecision

298 views
closed

1 Answer

Best answer
LeonardoEmili (35740 points)
13 65 155
by (35.7k points)
selected by

Buonasera,

posso chiederti come mai hai deciso di utilizzare il Try except? Ti proporrei, sperando di non sembrare arrogante, di ragionare su questo fatto: il try except in breve cattura un errore che in qualche modo non riesci a gestire nel normale flusso di esecuzione del tuo programma, perché non provare a risolvere il problema a monte?

Ora non so che tipo di struttura dati hai scelto di utilizzare per svolgere questo esercizio però in questo caso posso dirti che ce ne sono diversi che potrebbero aiutarti a gestire meglio il tuo problema. Un consiglio per evitare l'amato l'IndexError: se tu sai di voler lavorare su una struttura che ha indici che vanno da 0 alla larghezza/lunghezza -1 allora puoi controllare se l'indice sta per raggiungere tali limiti e sistemarlo. Potresti voler bloccare un comportamento di questo tipo oppure sfruttarlo ed evitare una mossa aggiuntiva che avresti dovuto fare con un apposito comando.

Concludo dicendoti un'ultima cosa riguardo il while True. Infatti è vero che il while rispetto al ciclo for si usa quando non sappiamo quante iterazioni voler fare, magari vogliamo un più ampio range di copertura nel caso si verifichino determinate condizioni. Tuttavia utlizzare la condizione True con il ciclo While ti obbliga poi a chiudere il tuo ciclo con un break o la tua funzione con un return, potresti altresi verificare determinate condizioni. Provato a considerare che il robottino deve muoversi finché non ha fatto 360° e in quel caso fermarsi?

Spero di averti aiutato,

ti auguro una buona serata

.

Leonardo Emili