Encuentra el resto de la división de un número


155

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

Por ejemplo:
si el número es 26 y el número dividido es 7, el resto de la división es 5.
(ya que 7 + 7 + 7 = 21 y 26-21 = 5).


8
Parece que ya lo hizo :)
Chris Dixon

Sugeriría buscar el operador de módulo
yurib

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

Respuestas:


205

Está buscando el operador de módulo:

a % b

por ejemplo:

26 % 7

Por supuesto, tal vez querían que lo implementaras tú mismo, lo que tampoco sería demasiado difícil.


13
Tenga en cuenta que el módulo operador siempre devuelve un número positivo, por lo que para los números negativos puede que no sea lo que se puede esperar cuando se habla del resto: -10 % 3 == 2. Sin embargo, a/b*b + a%b == asigue siendo cierto, ya que python siempre se redondea hacia -Infinity, a diferencia de otros lenguajes, que se redondea hacia 0 pero devolvería -1.
marcelj

66
Esto se debe a que Python %realiza un verdadero módulo, que devuelve valores en el rango [0, divisor)y se combina bien con la división en pisos (hacia el infinito negativo). Los lenguajes C utilizan el %operador para operaciones restantes que devuelve valores en el rango (-divisor, divisor)y se empareja bien con la división estándar (hacia cero).
Aaron Franke

196

El resto de una división se puede descubrir usando el operador %:

>>> 26%7
5

En caso de que necesite tanto el cociente como el módulo, existe la divmodfunción incorporada :

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

47

26% 7 (obtendrá el resto)

26/7 (obtendrá divisor puede ser valor flotante)

26 // 7 (obtendrá un valor entero de divisor solamente)


18

Si desea obtener el cociente y el resto en una línea de código (caso de uso más general), use:

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

17

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

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

15

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

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

Salida:

-2.0  # not 5

Tenga en cuenta que, como se indicó anteriormente, no es lo mismo que %.

Citando la documentación :

matemáticas. resto (x, y)

Devuelva el resto del estilo IEEE 754 de x con respecto a y. Para x finito y finito distinto de cero, 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 medio camino entre dos enteros consecutivos, se usa el entero par más cercano para n. El resto r = resto (x, y) siempre satisface abs (r) <= 0.5 * abs (y).

Los casos especiales siguen a IEEE 754: en particular, el resto (x, math.inf) es x para cualquier x finito, y el resto (x, 0) y el resto (math.inf, x) aumentan ValueError para cualquier no NaN x. Si el resultado de la operación restante es cero, ese cero tendrá el mismo signo que x.

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

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


math.remainder puede no funcionar de la manera que espera ejemplo para python 3.7 >>> math.remainder (-2.99,2) -0.9900000000000002 >>> math.remainder (-3,2) 1.0
Dominic Barraclough


4

El módulo sería la respuesta correcta, pero si lo está haciendo manualmente, esto debería funcionar.

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

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

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

4

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

26% 7 = 5;

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


3
Si usa Python 2, 26/7 = 3, para Python 3, 26/7 es aproximadamente 3.7142857142857144
Antti A

2

Puede encontrar el resto utilizando el operador de módulo Ejemplo

a=14
b=10
print(a%b)

Imprimirá 4


0

Si desea el resto de su problema de división, simplemente use las reglas del resto real, 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 desea hacer esto en formato de calculadora, simplemente sustitúyalo valone = 8 por valone = int(input("Value One")). Haz lo mismo con valtwo = 3, pero obviamente diferentes objetos de valor.


tienes que lanzar valone/valtwoa int. de lo contrario, dará como resultado un número flotante.
Ali Yılmaz

-1

puede definir una función y llamarla resto con 2 valores como rem (número1, número2) que devuelve número1% número2, luego cree un tiempo y configúrelo como verdadero, luego imprima dos entradas para su función con los números 1 y 2 y luego imprima (rem (número1, número2)


1
Por favor agregue un ejemplo de trabajo. Explicar un código teórico puede ser difícil de entender.
mischva11
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.