Ripetendo molte altre risposte, e solo per completezza, è necessario utilizzare un while loop
.
i = 0
while i < 5:
print(i)
if (not condition):
i+=1
Se si desidera spostare indietro un'iterazione nel ciclo (invece di ripetere un'iterazione), quindi utilizzare questo:
i = 0
while i < 5:
print(i)
if (condition):
i -= 1
else:
i += 1
In sostanza, while i < 5
valuta il momento ogni iterazione, e controlla se i < 5
. Così, con decremento/non cambiare i
, otteniamo qualcosa di simile: (valori di i
)
non cambiare: 1->2->3-(condition satisfied)> 3 -> 4 -> 5
Decrementale: 1->2->3-(condition satisfied)>2 -> 3 -> 4 -> 5
Il motivo per cui i=i-1
nel ciclo for non fa ripete l'iterazione è semplice. Nel ciclo for
, i
viene assegnato il valore dell'elemento successivo nel ciclo for. Python potrebbe interessarsi di meno di ciò che si fa con i
, a condizione che sia in grado di assegnargli l'elemento successivo. Così, il ciclo for for i in <your_iterable>:<do whatever>
è più vicino a questo:
_i = 0
_length = len(<your_iterable>)
while _i < _length:
i = _i
_i += 1
<do whatever>
Tuttavia, in questa analogia, si sarebbe non essere in grado di accedere alle variabili _
predicate (_i
, _length
). Ecco come semplificare la logica di for loop
. Si noti che indipendentemente da ciò che è assegnato a i
, verrà assegnato a _i
alla successiva iterazione e il ciclo non si preoccupa veramente di cosa sia i
.
fonte
2013-01-17 07:54:57
non cambiare le ruote dell'auto quando ci si muove. –
Di seguito sono riportate molte risposte che spiegano esattamente come incrementare 'i' in questo modo. Mi piacerebbe capire cosa stai facendo con 'i' in quanto potrebbe esserci un modo molto più chiaro di gestire questo codice. – Johnsyweb