143 votes

L'opération modulo sur les nombres négatifs en Python

J'ai trouvé un comportement étrange dans Python concernant les nombres négatifs :

>>> -5 % 4
3

Quelqu'un peut-il expliquer ce qui se passe ?

35 votes

Ça me semble correct

9 votes

..., -9, -5, -1, 3, 7, ...

3 votes

0voto

Punit Vara Points 1085

@Deekshant l'a bien expliqué en utilisant la visualisation. Une autre façon de comprendre %(modulo) est de poser une question simple.

Quel est le plus petit nombre le plus proche du dividende qui peut être divisible par le diviseur sur l'axe des X ?

Voyons quelques exemples.

5 % 3 

5 est le dividende, 3 est le diviseur. Si vous posez la question ci-dessus, 3 est le plus petit nombre le plus proche qui est divisible par le diviseur. La réponse serait 5 - 3 = 2. Pour un dividende positif, le plus petit nombre le plus proche sera toujours à droite du dividende.

-5 % 3

Le plus petit nombre le plus proche qui est divisible par 3 est -6, donc la réponse est -5 - (-6) = 1.

-5 %4

Le plus petit nombre le plus proche qui est divisible par 4 est -8, donc la réponse est -5 - (-8) = 3.

Python répond à chaque expression modulo avec cette méthode. J'espère que vous comprenez maintenant comment l'expression va s'exécuter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X