Trouver le reste de division d'un nombre

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

91
demandé sur Andy Hayden 2011-04-07 20:44:16

10 réponses

Vous recherchez l'opérateur modulo:

a % b

Par exemple:

26 % 7

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

130
répondu Uku Loskit 2016-02-27 17:51:16

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

>>> 26%7
5

Si vous avez besoin à la fois du quotient et du modulo, il y a la fonction intégrée divmod:

>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)
163
répondu tzot 2011-05-01 11:49:22

26% 7 (vous obtiendrez le reste)

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

26 // 7 (vous obtiendrez le diviseur seulement la valeur entière))

17
répondu Karush Mahajan 2016-03-17 22:14:01

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

26 - (26 // 7 * 7) = 5
12
répondu alys 2013-07-14 03:07:58

De python 3.7, il y a une nouvelle fonction math.remainder():

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

Citant la documentation :

Mathématiques.reste(x, y)

Renvoie le reste de style IEEE 754 de x avec pour X fini et y fini non nul, c'est le différence x-n * y, où n est l'entier le plus proche de la valeur exacte du quotient x / y. Si x / y est exactement à mi-chemin entre deux entiers consécutifs, l'entier pair le plus proche est utilisé pour N. reste r = reste (x, y) satisfait donc toujours abs(r)

Des cas particuliers suivent IEEE 754: en particulier, remainder(x, math.inf) est x pour tout x fini, et reste (x, 0) et reste (math.inf, x) raise ValueError pour tout non-Nan X. Si le résultat du reste l'opération est zéro, ce Zéro aura le même signe que X.

Sur les plates-formes utilisant IEEE 754 binaire à virgule flottante, le résultat de ceci l'opération est toujours exactement représentable: aucun erreur d'arrondi est présenté.

Issue29962 décrit la logique de la création de la nouvelle fonction.

5
répondu Chris_Rands 2018-01-11 14:28:04

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
4
répondu Cooper 2011-08-12 09:27:42

Utilisez le % au lieu du / Lorsque vous divisez. Ce sera de retour le reste pour vous. Donc, dans votre cas

26 % 7 = 5
3
répondu Bender the Greatest 2011-04-07 16:47:46

Je suggère de rechercher l'opérateurmodulo

3
répondu yurib 2011-04-07 16:49:25

Nous pouvons résoudre cela en utilisant l'opérateur module (%)

26 % 7 = 5;

Mais 26 / 7 = 3 car il donnera quotient mais l'opérateur % donnera le reste.

1
répondu KATTAMURU ANIL 2018-02-10 19:20:31

Si vous voulez le reste de votre problème de division, utilisez simplement les règles de reste réelles, tout comme en mathématiques. Certes, cela ne vous donnera pas une 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 faire cela dans un format de calculatrice, remplacez simplement valone = 8 avec valone = int(input("Value One")). Faites de même avec valtwo = 3, mais différents vairables évidemment.

0
répondu S. Ahmad 2017-10-19 00:33:34