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

Do you need help?

azzerare la variabile i nel ciclo for i in range

S
Simone Giovagnoni (960 points)
4 4 6
in Programmare in Python by (960 points)
Buonasera, ho iniziato da poco a programmare e mi servirebbe una mano, nel programma utilizzo un ciclo for, e per una condizione if la variabile i (for i in range) dovrebbe azzerarsi ogni volta che si verifica questa condizione.  
Ho assegnato valore 0 alla variabile i ma appena il programma ritorna al ciclo for la variabile riprende il numero dei cicli compiuti.

Come posso fare? Grazie in anticipo
1.3k views

7 Answers

R
Raffaele (3850 points)
16 27 49
by (3.9k points)
Non puoi, ogni volta che si riesegue il ciclo i prende il valore siccessivo della lista. Se la lista è generata tramite range(), puoi sostituire il for con un ciclo while, facendo aumentare di uno ogni volta all'inizio del ciclo il valore di i (i+=1) e interrompere il ciclo quando i è uguale al valore che ti interessa.

Spero di esserti stato utile!
S
Simone Giovagnoni (960 points)
4 4 6
by (960 points)
Grazie mille
angelo.spognardi (8190 points)
77 155 226
by (8.2k points)
Esatto: come abbiamo visto durante l'esercitazione, il for è un ciclo che viene ripetuto PER OGNI ELEMENTO DELLA SEQUENZA. Questo implica che assegnare un altro valore alla variabile usata nel ciclo for ha un effetto LIMITATO a quella singola iterazione: all'iterazione successiva, la variabile assumerà il valore dell'elemento successivo della sequenza.
raponi.federico (11280 points)
3 4 21
by (11.3k points)
Azzerando una la variabile ogni volta che si verifica quella determinata condizione andresti a creare un loop.

Per esempio se dovessi trovarti in un range da [0,9] e volessi resettare la variabile i ogni volta che è uguale a 5 l'operazione si ripeterebbe all'infinito dato che la variabile (i) non arriverebbe mai a range prestabilito terminando il for.
S
Simone Giovagnoni (960 points)
4 4 6
by (960 points)
Grazie mille!
andrea.sterbini (207940 points)
754 1269 2377
by (208k points)
No, ad ogni nuova iterazione in i viene inserito il prossimo valore generato da range
Valerio Cucchiaro (1900 points)
1 2 9
by (1.9k points)
Con il ciclo for non puoi interagire sulla variabile(i), per farlo dovresti utilizzare un ciclo while nel quale puoi assegnare dei valori alla variabile i.
d
davide.digaetani (340 points)
0 0 2
by (340 points)
Puoi provare ad usare l'istruzione break, che ferma il ciclo nel caso in cui la condizione espressa nell'if sia vera, altrimenti puoi usare un ciclo di while come già suggerito sopra
dolcetto_gommoso (2790 points)
4 6 18
by (2.8k points)
Invece di utilizzare un for, puoi utilizzare un while che non ha il vincolo dell'incremento della variabile che assegni, ovviamente poi dovrei creare una variabile i per poi incrementarla te.
Loriv3 (7970 points)
13 21 84
by (8.0k points)
In questo caso continuando sulla strada del for non potrai mai azzerare i in quanto deve sempre scorrere.

Potresti optare o per un while come ha detto un collega oppure potresti provare a creare anche un altro indice che scorre lungo la lista che puoi giostrare come preferisci tu o magari ti vengono altre idee in mente. Puoi sbizzarrirti come vuoi, ma occhio a non appesantire il codice con cose inutili
l
luca.ronca (600 points)
0 0 5
by (600 points)
La variabile "i" si trova nello stesso scope in cui viene eseguito il ciclo for, quindi anche se tu la modificherai con il tuo valore (in questo caso 0), al successivo passaggio del ciclo for verrà sovrascritta. Ti conviene dichiarare una variabile esterna al for e tenerla allineata (quando vuoi che venga incrementata nel for la incrementi esplicitamente) e la valorizzi a 0 quando necessario.
andrea.sterbini (207940 points)
754 1269 2377
by (208k points)
OK (anche se lo scope delle variabili in python è leggermente diverso da quello in C/Java)