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?
4 Réponses :
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"
%
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
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!")
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.
Si vous voulez est 1,2,3,4,5,6,7,8,9, utilisez la plage (1,10).