2011-04-07 8 views
77

¿Cómo podría encontrar el resto de la división de un número en Python?Encuentra el resto de la división de un número

Por ejemplo:
Si el número es 26 y el número dividido es 7, entonces el resto de la división es de 5.
(desde 7 + 7 + 7 = 21 y 26-21 = 5.) ​​

+7

No va a hacer su tarea por usted, si puede decirnos qué probó o dónde se quedó atascado la gente estará encantada de ayudar. – yurib

+6

Parece que ya lo hizo :) –

+7

No veo dónde mencionó nada sobre la tarea – p1l0t

Respuesta

111

que busca el módulo operador:

a % b 

por ejemplo:

26 % 7 

por supuesto, tal vez ellos querían que t o impleméntalo tú mismo, lo que tampoco sería demasiado difícil.

+7

Tenga en cuenta que el operador de módulo siempre devuelve un número positivo, por lo que para los números negativos podría no ser lo que esperaría al hablar del resto: '-10% 3 == 2'. Sin embargo, 'a/b * b + a% b == a' aún es verdadero, ya que python siempre se redondea hacia -Infinito, a diferencia de otros lenguajes, que redondean hacia 0 pero devolverían -1. – marcelj

2

Usa el% en lugar de/cuando divides. Esto devolverá el resto por ti. Así, en su caso

26 % 7 = 5 
3

yo sugeriría mirando hacia arriba el operador modulo

4

Modulo sería la respuesta correcta, pero si lo haces manualmente este debería funcionar.

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

while num >= div: 
    num -= div 
print num 
+2

Funciona solo si num es> = 0 y dif> 0. – 12431234123412341234123

138

El resto de una división puede ser descubierto usando el operador %:

>>> 26%7 
5 

En caso de que necesite tanto el cociente y el módulo, hay la orden interna divmod función:

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

upvote para la información útil sobre divmod! –

12

Si desea evitar el módulo, también puede usar una combinación de las cuatro operaciones básicas :)

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

26% 7 (obtendrá resto)

26/7 (Usted recibirá divisor puede ser valor flotante)

26 // 7 (usted conseguirá divisor único valor entero))

0

Si quiere el resto de su problema de división, simplemente use las reglas de resto actuales, al igual que en matemáticas. De acuerdo, esto no te dará una salida decimal.

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

Si usted desea hacer esto en un formato de calculadora, simplemente sustituir valone = 8 con valone = int(input("Value One")). Haga lo mismo con valtwo = 3, pero obviamente con diferentes variables.

1

Desde Python 3.7, hay una nueva función math.remainder():

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

Citando al documentation: matemáticas

.remanente (x, y)

Devuelva el resto del estilo IEEE 754 de x con con respecto a y. Para finito x y finito distinto de cero y, esta es la diferencia x - n * y, donde n es el entero más cercano al valor exacto del cociente x/y. Si x/y está exactamente a la mitad entre dos enteros consecutivos , el entero par más cercano se usa para n. El resto r = resto (x, y) siempre satisface abs (r) < = 0.5 * abs (y).

casos especiales siguen IEEE 754: en particular, el resto (x, math.inf) es x para cualquier x finita, y el resto (x, 0) y el resto (math.inf, x) elevar ValueError para cualquier no NaN x. Si el resultado del resto operación es cero, ese cero tendrá el mismo signo que x.

En plataformas que utilizan el punto flotante binario IEEE 754, el resultado de esta operación siempre es exactamente representable: no se ha introducido ningún error de redondeo .

Issue29962 describe las razones para crear la nueva función.

1

Podemos resolver esto mediante el uso operador de módulo (%)

26% 7 = 5;

pero 26/7 = 3 porque dará cociente pero el operador% dará el resto.

Cuestiones relacionadas