2017-10-04 1 views
1

J'ai une question à propos de la boucle for et while de Python3.6:Pourquoi ces boucles for et while parcourent-elles différemment?

Pourquoi les variables de la boucle while peuvent-elles affecter cette boucle, et les variables de la boucle for ne le peuvent pas? Y a-t-il un moyen de faire fonctionner ce dernier moyen?

Je fais une question mathématique en utilisant Python pour calculer, l'algorithme utilise une boucle for identique à la première dans les blocs de code. Mais avec la valeur de variable-a dans cette boucle qui change, la plage de la boucle for reste. Donc, j'utilise une boucle while pour atteindre mon objectif et ça passe. J'imagine qu'une plage (un ensemble d'éléments) est décidée une fois qu'elle a été exécutée, ou qu'une boucle for-loop ne partage pas la même 'nature' qu'une boucle while.

a = 28 
for i in range(1,a): 
    a = a - 5 

# outcomes: a = -107, i =27 

a = 28 
i = 1 
while i < a: 
    a = a - 5 
    i = i + 1 

# outcomes: a = 3, i = 6 
+1

Oui, dans la boucle for, la plage est précalculée, donc les itérations sont corrigées. Dans la boucle while, la condition est testée à nouveau en fonction des valeurs de 'a' et' i' après chaque itération. –

+0

Vous pouvez ajouter une instruction d'impression dans chaque boucle pour voir la réponse @ cᴏʟᴅsᴘᴇᴇᴅ et les boucles Python en action. – SherylHohman

+0

Oui, les boucles 'for' python sont des constructions" for-each " –

Répondre

2
a = 28 
for i in range(1,a): 
    a = a - 5 

Lire: Soustraire 5 de a, 27 fois.


a = 28 
i = 1 
while i < a: 
    a = a - 5 
    i = i + 1 

Lire: soustrayant 5 de Conserver a aussi longtemps que i est moindre que a.


De toute évidence, ces deux déclarations ne sont pas les mêmes. La boucle for précalibre la plage et les itérations sont fixes, quelle que soit la valeur de a. Dans le cas du while, la condition est à nouveau testée avec la dernière valeur a à chaque nouvelle itération, en tenant compte de la différence que vous voyez.

+0

Désolé, nouveauté dans stackoverflow. Je pensais que l'acceptation signifie l'acceptation de la réponse, juste découvert qu'il ya une coche à côté de la réponse qui doit être basculée. Merci pour l'aide! – Sirius5783