답변:
모듈로 연산자를 찾고 있습니다.
a % b
예를 들면 다음과 같습니다.
26 % 7
물론, 그들은 당신이 직접 구현하기를 원했을 수도 있습니다.
-10 % 3 == 2
. 그러나 a/b*b + a%b == a
파이썬은 항상 0으로 반올림하지만 -1을 반환하는 다른 언어와 달리 항상 -Infinity로 반올림하기 때문에 사실입니다.
%
은 진정한 모듈러스를 수행 하기 때문에 범위의 값을 반환 [0, divisor)
하고 바닥 분할 (음의 무한대로)과 잘 쌍을 이룹니다. C 언어 %
는 나머지 연산에 연산자를 사용하여 범위의 값을 반환 (-divisor, divisor)
하고 표준 나눗셈 (0으로)과 잘 대응합니다.
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 는 새로운 기능을 만들기위한 이론적 근거를 설명합니다.
모듈로가 정답이지만 수동으로 수행하는 경우 작동합니다.
num = input("Enter a number: ")
div = input("Enter a divisor: ")
while num >= div:
num -= div
print num
모듈로 연산자를 사용하여 나머지를 찾을 수 있습니다.
a=14
b=10
print(a%b)
4를 인쇄합니다
나눗셈 문제의 나머지 부분을 원하면 수학에서와 같이 실제 나머지 규칙을 사용하십시오. 이것은 당신에게 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/valtwo
int 로 캐스팅 해야합니다. 그렇지 않으면 float 숫자가됩니다.
함수를 정의하고 rem (number1, number2)와 같은 2 개의 값으로 나머지를 호출하여 number1 % number2를 반환 한 다음 시간을 생성하고 true로 설정 한 다음 숫자 1과 2를 보유한 함수에 대해 두 개의 입력을 인쇄 한 다음 print (rem (숫자 1, 숫자 2)