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).

Beto
fuente
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.

Uku Loskit
fuente
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)
tzot
fuente
47

26% 7 (obtendrá el resto)

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

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

Karush Mahajan
fuente
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)
Alok Nayak
fuente
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
alys
fuente
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.

Chris_Rands
fuente
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

Use el% en lugar de / cuando divida. Esto le devolverá el resto. Entonces en tu caso

26 % 7 = 5
Bender el más grande
fuente
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
cobre
fuente
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.

KATTAMURU ANIL
fuente
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

Swarnima Shishodia
fuente
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.

S. Ahmad
fuente
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)

usuario13790410
fuente
1
Por favor agregue un ejemplo de trabajo. Explicar un código teórico puede ser difícil de entender.
mischva11