0
votes

Pour la compréhension de l'exécution de boucle

J'ai une question concernant pour la boucle de travail xxx

la sortie est: 0,1,2,3,4,5,6,7,8,9 < p> pourquoi ce n'est pas 0,1,2,3,4 parce que nous mettons à jour m valeur m-1


6 commentaires

Étant donné que la plage a déjà été créée avec la valeur d'origine de m .


La plage () est évaluée une fois avant que la boucle ne commence.


Veuillez ne pas ajouter des balises non pertinentes à votre question.


En ce qui concerne la boucle de travail, il s'agit de la première initialisation de la variable (disons à I variables), puis vérifiez la condition si la condition est vraie, elle s'exécute pour le corps de la boucle, puis à nouveau (variable I) et vérifiez à nouveau la condition. Et ici la valeur de condition change chaque temps.


Est-ce que cette boucle fonctionne différente de celle de la boucle dans Java ou C?


Oui, cette boucle est différente de celles qui fonctionnent différemment.


4 Réponses :


0
votes

c'est parce que Python int s est immuable , signifiant ne peut pas changer la valeur d'un.

Par conséquent, vous n'avez pas changé la valeur de la variable précédente, vous avez simplement créé une autre variable appelée m , écrasant également le précédent dans le processus.


0 commentaires

0
votes

Le nombre de fois qu'un pour boucle exécuter sera exécuté, est déjà évalué à la pour boucle elle-même, et le code après le pour La boucle ne peut pas affecter combien de fois cela fonctionne. Il est corrigé, jusqu'à ce qu'il soit modifié avant que le pour est exécuté, une erreur se produit ou une pause se trouve à l'intérieur.


3 commentaires

Public statique Void Main (String [] args) {int m = 10; pour (int i = 0; i <= m; i = i + 1) {m = m-1; System.out.println (i); } 0 1 2 3 4 5


Vous pouvez vérifier le code ci-dessus qui est écrit en Java et affecte l'exécution de la boucle


Je parlais de python, c'est comme ça que ça marche dans Python, c'est différent en Java et C ++ parce que la boucle de la boucle est comme une boucle tandis que



0
votes

Le type représente une séquence immuable de nombres. des moyens une fois qu'un objet de plage est créé comme Plage (A, B) -> (A, A + 1, A + 2, ... B) alors si vous modifiez la valeur des limites (démarrage ou fin), il n'affectera pas le pour instruction.

Donc, si vous souhaitez modifier l'exécution de la boucle, vous avez besoin d'itérateur qui produit une instance mutable.


0 commentaires

0
votes

Je vais vous donner une réponse un peu plus détaillée.

Donc, tout d'abord, de tels problèmes commencent lorsque vous commencez à mettre en œuvre Java, C # etc concepts à Python. Il convient de noter que Python est similaire à d'autres langues de certains aspects et différents dans d'autres.

pour la boucle de Python n'est pas identique à celui de Java. En Java for Loop est évalué pour la condition de test à chaque itération, donc lorsque vous augmentez ou décrémentez une variable utilisée dans la condition d'évaluation de la boucle, elle affecte la boucle. Par exemple: xxx

alors ici votre boucle ne fonctionne pas de i = 0 à i = 11, comme vous décréparez m . Vous pouvez la visualiser certains comme ceci: xxx

sur chaque itération i est imprimé et sur le test de la 7ème boucle, la condition devient false des pauses de boucle. < / p>

venez maintenant à Python (le grand), vous enregistrez dans gamme () . Vous penseriez que si vous faites quelque chose comme ceci: impression (plage (4))

Vous devriez obtenir ceci: [0, 1, 2, 3]

mais en fait, vous obtiendrez ceci: plage (0, 4)

C'est là que vous devez être pythonique. Une fois que vous l'avez dit de commencer à 0 et arrêtez-vous à m il retournera une référence à un objet générateur . Donc, au lieu de créer un objet de liste et de renseigner la liste entière avec des valeurs (qui est une mémoire très inefficace lorsqu'il s'agit de grandes gammes), Python fera évaluation paresseuse et calculera le nombre sur chaque itération. Donc, peu importe si vous modifiez la valeur de m , le générateur est déjà créé une fois que la boucle a démarré.

Cependant, Le comportement de Java's pour la boucle peut être implémenté à l'aide de pendant que la boucle en python.


0 commentaires