En arithmétique, si vous utilisez l'ensemble des nombres réels (ou les nombres rationnels), et vous diviser, disons, 1/2
, vous pouvez obtenir 0.5
comme la réponse . Maintenant, si vous vous contraintez à utiliser uniquement les entiers, 1/2
retournera 0
, car, dans les entiers, 1
n'est pas divisible par 2
.Une façon de faire la division entière serait alors d'effectuer une division longue, de stocker la partie entière du résultat comme le résultat de la division entière, et de ne pas perdre de données, de stocker aussi le reste, ce qui est l'opérateur %
résultats.
En Python, lorsque vous faites la division standard /
, vous effectuez réellement la division en virgule flottante (donc les fractions peuvent être représentées), et donc 1/2 = 0.5
. Maintenant, si vous avez utilisé la division entière //
, alors 1//2 = 0
. Pour obtenir cette valeur, python effectue simplement une division standard et prend la parole du résultat. Si vous deviez écrire manuellement l'algorithme de division sur papier, vous remarquerez que cette division a un reste de 1
. L'opérateur de module %
renvoie simplement ce reste.
Ainsi, 1/2 = 0.5
, 1//2 = 0
, et 1%2 = 1
.
En d'autres termes, %
renvoie le même reste que vous obtiendriez en cas de division longue.
_0_ <-- result of (1//2)
2| 1
-0
---
1 <- remainder, result of (1 % 2)
C'est l'opérateur modulo. Il renvoie le reste de la division. – squiguy
L'avez-vous exécuté et observé le résultat? Aussi, jouez avec ceci dans l'interprète. – icedwater
Pourquoi les downvotes? Cela semble être une question parfaitement raisonnable et claire d'un programmeur débutant. – vroomfondel