web-dev-qa-db-fra.com

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 le nombre divisé est 7, le reste de la division est 5.
(depuis 7 + 7 + 7 = 21 et 26-21 = 5.)

100
Bob

vous recherchez l'opérateur modulo:

a % b

par exemple:

26 % 7

Bien sûr, peut-être qu'ils voulaient que vous l'appliquiez vous-même, ce qui ne serait pas trop difficile non plus.

141
Uku Loskit

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, utilisez la fonction divmod intégrée:

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

26% 7 (vous aurez le reste)

26/7 (vous obtiendrez un diviseur pouvant être une valeur flottante)

26 // 7 (vous obtiendrez un diviseur uniquement en valeur entière))

23
Karush Mahajan

Si vous voulez éviter le modulo, vous pouvez également utiliser une combinaison des quatre opérations de base :)

26 - (26 // 7 * 7) = 5
12
alys

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

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

Citer la documentation :

maths .reste (x, y)

Renvoyez le reste de x de style IEEE 754 avec x avec par rapport à y. Pour x fini et y non nul, c'est le différence x - n * y, où n est le nombre entier le plus proche de la valeur exacte du quotient x/y. Si x/y est exactement à mi-chemin entre deux nombres entiers consécutifs, le nombre 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 suivent IEEE 754: en particulier, reste (x, math.inf) est x pour tout x fini, et reste (x, 0) et reste (math.inf, x) déclenche ValueError pour tout x non-NaN. Si le résultat du reste 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, il en résulte le résultat l'opération est toujours exactement représentable: aucune erreur d'arrondi n'est introduit.

Issue29962 décrit la raison d'être de la création de la nouvelle fonction.

8
Chris_Rands

Utilisez le% au lieu du/lorsque vous divisez. Cela retournera le reste pour vous. Donc dans ton cas

26 % 7 = 5
3

Modulo serait la bonne réponse, mais si vous le faites manuellement, cela devrait fonctionner.

num = input("Enter a number: ")
div = input("Enter a divisor: ")

while num >= div:
    num -= div
print num
3
Cooper

Nous pouvons résoudre ce problème en utilisant l'opérateur de module (%)

26% 7 = 5;

mais 26/7 = 3 car cela donnera un quotient mais% opérateur donnera le reste.

1
KATTAMURU ANIL

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

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

Si vous voulez le reste de votre problème de division, utilisez simplement les règles du reste, comme en mathématiques. Accordé, cela ne vous donnera pas de sortie décimale.

valone = 8
valtwo = 3
x = valone / valtwo
r = valone - (valtwo * x)
print "Answer: %s with a remainder of %s" % (x, r)

Si vous voulez utiliser une calculatrice, remplacez simplement valone = 8.__ par valone = int(input("Value One")). Faites la même chose avec valtwo = 3, mais différents vairables évidemment.

0
S. Ahmad