Voici mon code
A = [0,0,-1,0]
for i in range(len(A)):
while (i<len(A)) and (A[i] >=0):
print(i, A[i])
i=i+1
Quand j'exécute ce code en python 3.x ma sortie est
Output
0 0
1 0
1 0
3 0
Ma question est : Lorsque la boucle while se termine pour la première fois, la valeur de i
devient 2
depuis A[2] < 0
Mais après cela, quand il va au parent pour la boucle, alors pourquoi la valeur de i
redevient 1
?
Parce qu'après cela dans la 3ème ligne de sortie, il imprime à nouveau 1 0
.
4 réponses
Les boucles Python for
ne sont pas comme les boucles C for
; la valeur d'itération est remplacée sur chaque boucle, ignorant toutes les modifications apportées à l'intérieur de la boucle. Peu importe ce que vous faites pour i
à l'intérieur de la boucle for
, lorsque la boucle for
boucle, vous tirez la valeur suivante de l'itérateur, donc i
progressera toujours à travers tous les valeurs de range
une à la fois.
Le problème se produit après la sortie de la boucle while. i est défini sur la valeur suivante dans range(len(A))
qui est 1 pour la prochaine itération de la boucle for.
Vous pouvez résoudre ce problème en initialisant i et en supprimant la boucle for
A = [0,0,-1,0]
i=0
while (i<len(A)) and (A[i] >=0):
print(i, A[i])
i=i+1
Ou en utilisant la commande break
A = [0,0,-1,0]
for i in range(len(A)):
if(A[i]<0):
break
print(i, A[i])
Essayez d'exécuter le code dans n'importe quel débogueur Python et vous verrez tout cela en même temps. Le code fonctionne correctement. Si vous avez besoin d'un résultat spécifique, demandez, je vous aiderai.
L'instruction 'for' ne fonctionne pas comme en C. La variable i est réaffectée à chaque itération.
Vous pouvez penser à «pour i dans x» comme étant plus semblable: tandis que x a plus de valeurs, définissez i sur la valeur suivante de x.
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.