1
votes

Questions sur la boucle while en python

Il y a un quiz sur Coursera que je ne comprends pas

i = 1
while i % 3: 
    print(i, end = ' ')
    if i >= 10:
        break
    i += 1

Je pense que le résultat est 1,2,3,4,5,6,7,8,9, mais le résultat réel la sortie est 1 2. Je ne comprends pas ce que signifie "while i% 3", quelqu'un peut-il expliquer cela?


1 commentaires

Si vous voulez est 1,2,3,4,5,6,7,8,9, utilisez la plage (1,10).


4 Réponses :


0
votes

Cette réponse stackoverflow résume assez bien la situation: https://stackoverflow.com/a/961351/9822083

Le symbole % en python signifie l'opérateur Modulus - peut-être plus facilement compris comme le «reste». Je crois que vous vouliez dire "i <3"


0 commentaires

0
votes

% représente l'opérateur de module.

Renvoie la partie décimale (reste) du quotient.

https://python-reference.readthedocs.io /en/latest/docs/operators/modulus.html

while i% 3 continue de s'exécuter tant que i% 3 renvoie une valeur qui n'est pas 0 , ce qui pour la première fois, c'est i = 3

>>> 1 % 3
1
>>> 2 % 3
2
>>> 3 % 3
0


0 commentaires

2
votes

L'opérateur% (modulo) en python calcule le reste à partir de la division du premier nombre par le second.

EG: 5% 3 == 2

Lorsque i est incrémenté à 3 dans votre programme, le résultat de 3% 3 est 0 . P >

En Python, 0 == False , donc quand i augmente à 3 , il ne satisfera alors plus à la condition de boucle while.

Vous pouvez essayer ceci vous-même, en faisant:

while 0:
    print("Hello world!")


0 commentaires

0
votes

tout nombre entier compte comme un "vrai" pour une boucle while et quand un "faux" est atteint, la boucle while s'arrête. Donc, cette instruction «si» est en fait inutile ou redondante dans ce code.

>>>1 % 3
1 - which means true
>>>3 % 3
0 - which means false so the while loop stops and doesn't even run

Ceci termine la boucle au fur et à mesure que vous incrémentez i. Tout cela avant l'instruction if peut même s'exécuter 10 fois. La réponse est donc 1,2.


0 commentaires