숫자의 나눗셈을 구합니다


155

파이썬에서 나눗셈을 찾는 방법은 무엇입니까?

예를 들어
, 숫자가 26이고 나누기 숫자가 7이면 나누기 나머지는 5입니다
(7 + 7 + 7 = 21 및 26-21 = 5부터).


8
그가 이미 한 것처럼 보인다 :)
Chris Dixon

나는 모듈로 연산자를 찾는 것이 좋습니다
yurib

11
그가 숙제에 대해 언급 한 부분을 보지 못합니다
p1l0t

답변:


205

모듈로 연산자를 찾고 있습니다.

a % b

예를 들면 다음과 같습니다.

26 % 7

물론, 그들은 당신이 직접 구현하기를 원했을 수도 있습니다.


13
모듈로 연산자는 항상 양수를 반환하므로 음수의 경우 나머지에 대해 이야기 할 때 예상 한 것과 다를 수 있습니다 -10 % 3 == 2. 그러나 a/b*b + a%b == a파이썬은 항상 0으로 반올림하지만 -1을 반환하는 다른 언어와 달리 항상 -Infinity로 반올림하기 때문에 사실입니다.
marcelj

6
파이썬 %은 진정한 모듈러스를 수행 하기 때문에 범위의 값을 반환 [0, divisor)하고 바닥 분할 (음의 무한대로)과 잘 쌍을 이룹니다. C 언어 %는 나머지 연산에 연산자를 사용하여 범위의 값을 반환 (-divisor, divisor)하고 표준 나눗셈 (0으로)과 잘 대응합니다.
Aaron Franke

196

부서의 나머지 부분은 연산자를 사용하여 발견 할 수 있습니다 %.

>>> 26%7
5

몫과 모듈로가 모두 필요한 경우 내장 divmod함수가 있습니다.

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

47

26 % 7 (나머지 얻을 것이다)

26/7 (제수를 부동 값으로 사용할 수 있음)

26 // 7 (제수 만 정수 값을 얻습니다))


18

한 줄의 코드 (보다 일반적인 유스 케이스)에서 몫과 나머지를 얻으려면 다음을 사용하십시오.

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

17

모듈로를 피하려면 네 가지 기본 작업을 조합하여 사용할 수도 있습니다. :)

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

16

Python 3.7부터 새로운 math.remainder()기능이 있습니다.

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

산출:

-2.0  # not 5

참고로 위의 동일한 아니다%.

문서 인용 :

수학. 나머지 (x, y)

y와 관련하여 x의 IEEE 754 스타일 나머지를 반환합니다. 유한 x 및 유한 0이 아닌 y의 경우, 이것은 차이 x-n * y이며, 여기서 n은 몫 x / y의 정확한 값에 가장 가까운 정수입니다. x / y가 두 개의 연속 정수 사이의 정확히 절반이면 n에 가장 가까운 짝수가 사용됩니다. 나머지 r = 나머지 (x, y)는 항상 abs (r) <= 0.5 * abs (y)를 충족합니다.

특수한 경우는 IEEE 754를 따릅니다. 특히, 나머지 x (x, math.inf)는 모든 유한 x에 대해 x이고 나머지 (x, 0) 및 나머지 (math.inf, x)는 NaN이 아닌 x에 대해 ValueError를 발생시킵니다. 나머지 연산의 결과가 0이면 해당 0은 x와 같은 부호를 갖습니다.

IEEE 754 이진 부동 소수점을 사용하는 플랫폼에서이 작업의 결과는 항상 정확하게 표현 가능합니다. 반올림 오류가 발생하지 않습니다.

Issue29962 는 새로운 기능을 만들기위한 이론적 근거를 설명합니다.


math.remainder가 Python 3.7의 예제를 예상 한대로 작동하지 않을 수 있음 >>> math.remainder (-2.99,2) -0.9900000000000002 >>> math.remainder (-3,2) 1.0
Dominic Barraclough

4

나눌 때 / 대신 %를 사용하십시오. 그러면 나머지가 반환됩니다. 그래서 당신의 경우

26 % 7 = 5

4

모듈로가 정답이지만 수동으로 수행하는 경우 작동합니다.

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

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

5
num이> = 0이고 dif> 0 인 경우에만 작동합니다.
12431234123412341234123

4

계수 연산자 (%)를 사용하여이 문제를 해결할 수 있습니다

26 % 7 = 5;

26 / 7 = 3은 몫을 줄 것이지만 % 연산자는 나머지를 줄 것입니다.


3
Python 2, 26/7 = 3을 사용하는 경우 Python 3의 경우 26/7은 약 3.7142857142857144
Antti A


0

나눗셈 문제의 나머지 부분을 원하면 수학에서와 같이 실제 나머지 규칙을 사용하십시오. 이것은 당신에게 10 진수 출력을주지 않을 것입니다.

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

당신이 계산기 형식이하고 싶으면, 다만 대체 valone = 8 와 함께 valone = int(input("Value One")). 와 동일 valtwo = 3하지만 다른 vairables를 분명히하십시오.


valone/valtwoint 로 캐스팅 해야합니다. 그렇지 않으면 float 숫자가됩니다.
Ali Yılmaz

-1

함수를 정의하고 rem (number1, number2)와 같은 2 개의 값으로 나머지를 호출하여 number1 % number2를 반환 한 다음 시간을 생성하고 true로 설정 한 다음 숫자 1과 2를 보유한 함수에 대해 두 개의 입력을 인쇄 한 다음 print (rem (숫자 1, 숫자 2)


1
실제 사례를 추가하십시오. 일부 이론적 코드를 설명하는 것은 이해하기 어려울 수 있습니다.
mischva11
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.