219 votes

Trouver le reste de la division d'un nombre

Comment puis-je trouver le reste de la division d'un nombre en Python ?

Par exemple :
Si le nombre est 26 et que le nombre divisé est 7, le reste de la division est 5.
(puisque 7+7+7=21 et 26-21=5).


Pour un test de divisibilité simple, voir <a href="https://stackoverflow.com/questions/8002217">Comment vérifier si un nombre est divisible par un autre nombre ? </a>.

268voto

Uku Loskit Points 15705

Vous cherchez l'opérateur modulo :

a % b

par exemple :

>>> 26 % 7
5

Bien sûr, il se peut qu'ils veuillent que vous le mettiez en œuvre vous-même, ce qui ne serait pas trop difficile non plus.

235voto

tzot Points 32224

Le reste d'une division peut être découvert à l'aide de l'opérateur % :

>>> 26%7
5

Si vous avez besoin du quotient et du modulo, vous pouvez utiliser la fonction intégrée divmod fonction :

>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)

70voto

Karush Mahajan Points 621

26 % 7 (vous obtiendrez le reste)

26 / 7 (vous obtiendrez le diviseur, qui peut être une valeur flottante)

26 // 7 (vous obtiendrez le diviseur, uniquement une valeur entière)

37voto

user1756427 Points 40

Si vous voulez obtenir le quotient et le reste en une seule ligne de code (cas d'utilisation plus général), utilisez :

quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)

23voto

Chris_Rands Points 15161

Depuis Python 3.7, il existe une nouvelle fonction math.remainder() fonction :

from math import remainder
print(remainder(26,7))

Sortie :

-2.0  # not 5

Note, comme ci-dessus, ce n'est pas la même chose comme % .

Citant le la documentation :

mathématiques. reste (x, y)

Retourne le reste de x dans le style IEEE 754 avec par rapport à y. Pour un x fini et un y fini non nul, il s'agit de la différence x - n*y, où n est l'entier le plus proche de la valeur exacte du quotient x / y. du quotient x / y. Si x / y est exactement à mi-chemin entre deux entiers entiers consécutifs, l'entier pair le plus proche est utilisé pour n. Le reste r = reste(x, y) satisfait donc toujours abs(r) <= 0.5 * abs(y).

Les cas particuliers sont conformes à la norme IEEE 754 : en particulier, remainder(x, math.inf) est x pour tout x fini, et remainder(x, 0) et remainder(math.inf, x) soulèvent ValueError pour tout x non-NaN. Si le résultat de l'opération de reste est zéro, ce zéro aura la même valeur que le reste de l'opération. est zéro, ce zéro aura le même signe que x.

Sur les plates-formes utilisant la virgule flottante binaire IEEE 754, le résultat de la fonction est toujours exactement représentable : aucune erreur d'arrondi n'est d'arrondi n'est introduite.

Numéro 29962 décrit la raison d'être de la création de la nouvelle fonction.

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