Encontre o restante da divisão de um número


155

Como eu poderia encontrar a divisão restante de um número em Python?

Por exemplo:
Se o número é 26 e o ​​número dividido é 7, o restante da divisão é 5.
(desde 7 + 7 + 7 = 21 e 26-21 = 5).


8
Parece que ele já fez :)
Chris Dixon

Eu sugiro olhar o módulo operador
yurib

11
Eu não vejo onde ele mencionou nada sobre a lição de casa
p1l0t

Respostas:


205

você está procurando o operador módulo:

a % b

por exemplo:

26 % 7

Claro, talvez eles quisessem que você o implementasse, o que também não seria muito difícil.


13
Note-se que o operador módulo sempre retorna um número positivo, de modo que para números negativos, pode não ser o que você esperaria ao falar sobre o restante: -10 % 3 == 2. No entanto, a/b*b + a%b == aainda é verdade, já que o python sempre arredonda para -Infinity, diferente de outras linguagens, que arredondam para 0, mas retornam -1.
marcelj

6
Isso %ocorre porque o Python executa um módulo verdadeiro, que retorna valores no intervalo [0, divisor)e combina bem com a divisão com piso (em direção ao infinito negativo). As linguagens C usam o %operador para operações restantes, que retornam valores no intervalo (-divisor, divisor)e emparelham bem com a divisão padrão (em direção a zero).
Aaron Franke

196

O restante de uma divisão pode ser descoberto usando o operador %:

>>> 26%7
5

Caso você precise do quociente e do módulo, há a divmodfunção interna :

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

47

26% 7 (você receberá o restante)

26/7 (você obterá o divisor pode ser um valor flutuante)

26 // 7 (você receberá apenas o valor inteiro do divisor)


18

Se você deseja obter quociente e restante em uma linha de código (caso de uso mais geral), use:

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

17

Se você deseja evitar o módulo, também pode usar uma combinação das quatro operações básicas :)

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

15

No Python 3.7, há uma nova math.remainder()função:

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

Resultado:

-2.0  # not 5

Observe que, como acima, não é o mesmo que %.

Citando a documentação :

matemática. restante (x, y)

Retorne o restante do estilo IEEE 754 de x em relação a y. Para x finito e finito diferente de zero y, essa é a diferença x - n * y, em que n é o número inteiro mais próximo do valor exato do quociente x / y. Se x / y estiver exatamente na metade do caminho entre dois números inteiros consecutivos, o número par mais próximo será usado para n. O restante r = restante (x, y), portanto, sempre satisfaz abs (r) <= 0,5 * abs (y).

Casos especiais seguem o IEEE 754: em particular, o restante (x, math.inf) é x para qualquer x finito e o restante (x, 0) e o restante (math.inf, x) aumentam o ValueError para qualquer NaN x. Se o resultado da operação restante for zero, esse zero terá o mesmo sinal que x.

Nas plataformas que utilizam o ponto flutuante binário IEEE 754, o resultado dessa operação é sempre exatamente representável: nenhum erro de arredondamento é introduzido.

O Issue29962 descreve a justificativa para criar a nova função.


math.remainder pode não funcionar como você espera, por exemplo, para o python 3.7 >>> math.remainder (-2.99,2) -0.9900000000000002 >>> math.remainder (-3,2) 1.0
Dominic Barraclough

4

Use% em vez de / quando você dividir. Isso retornará o restante para você. Então no seu caso

26 % 7 = 5

4

Módulo seria a resposta correta, mas se você estiver fazendo isso manualmente, isso deve funcionar.

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

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

5
Funciona apenas se num for> = 0 e dif> 0.
12431234123412341234123

4

Podemos resolver isso usando o operador de módulo (%)

26% 7 = 5;

mas 26/7 = 3, porque dará o quociente, mas o operador% dará o restante.


3
Se você usa Python 2, 26/7 = 3, para Python 3, 26/7 é cerca de 3,7142857142857144
Antti A

2

Você pode encontrar o restante usando o operador modulo

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

Ele imprimirá 4


0

Se você quiser o restante do seu problema de divisão, use as regras restantes, como na matemática. Concedido isso não fornecerá uma saída decimal.

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

Se você quiser fazer isso em um formato de calculadora, basta substituir valone = 8 por valone = int(input("Value One")). Faça o mesmo com valtwo = 3, mas diferentes variáveis ​​obviamente.


você tem que converter valone/valtwopara int. caso contrário, resultará em um número flutuante.
Ali Yılmaz

-1

você pode definir uma função e chamá-la de restante com 2 valores como rem (número1, número2) que retorna número1% número2, em seguida, criar um tempo e configurá-lo como true, em seguida, imprimir duas entradas para sua função segurando os números 1 e 2 e imprimir (rem (número1, número2)


1
Por favor, adicione um exemplo de trabalho. Explicar algum código teórico pode ser difícil de entender.
mischva11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.