2011-04-07 66 views
77

我怎麼能找到在Python中的數字的餘數?查找數字的餘數部分

例如:
如果數字爲26和分割數爲7,則該餘數是5。
(因爲7 + 7 + 7 = 21和26-21 = 5)。

+7

如果您能告訴我們您嘗試了什麼,或者您卡在哪裏,人們會很樂意提供幫助,您不會爲您完成功課。 – yurib 2011-04-07 16:46:17

+6

看起來他已經做了:) – 2011-04-07 16:47:58

+7

我沒有看到他提到的任何有關家庭作業的地方 – p1l0t 2015-10-06 14:33:04

回答

111

您正在尋找模運算符:

a % b 

例如:

26 % 7 

當然,也許他們希望你牛逼o自己實施,這也不會太困難。

+7

請注意,模運算符總是返回一個正數,所以對於負數,它可能不是您在討論剩餘時所期望的: '-10%3 == 2'。然而'a/b * b + a%b == a'仍然成立,因爲python總是向-Infinity四捨五入,與其他一些語言不同,它們向0舍入,但會返回-1。 – marcelj 2014-10-01 12:54:40

2

在分割時使用%而不是/。這將爲您返回剩餘部分。所以你的情況

26 % 7 = 5 
4

模將是正確的答案,但如果你正在做手工這應該工作。

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

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

僅在num> = 0且dif> 0時有效。 – 12431234123412341234123 2016-06-09 16:46:24

138

A處的剩餘部分可通過操作%發現:

>>> 26%7 
5 

如果您同時需要商和模數,有內建divmod功能:

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

upvote關於divmod的有用信息! – 2012-04-05 10:08:16

12

如果你想避免模數,你也可以使用四個基本操作的組合:)

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

26%7(你將得到的餘數)

26/7(你將得到除數可以是浮點值)

26 // 7(你將得到除數只整數值))

0

如果你想在你的部門問題的其餘部分,只是用實際剩餘的規則,就像在數學。當然,這不會給你一個十進制輸出。

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

如果你想在這個計算器格式,剛剛替補valone = 8valone = int(input("Value One"))。與valtwo = 3一樣,但明顯不同的可變物。

1

通過Python 3.7,有一個新的math.remainder()功能:

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

引述documentation

數學。其餘部分(x,y)

返回x的IEEE 754樣式餘數和 方面的y。對於有限x和有限非零y,這是差異x-n * y,其中n是商x/y的精確值 的最接近的整數。如果x/y恰好在兩個連續整數之間的中間,則最接近的偶數整數用於n。餘數r =餘數(x,y)總是滿足abs(r)< = 0.5 * abs(y)。

特殊情況遵循IEEE 754:尤其是,餘數(X,math.inf) 爲x爲任何有限x和餘數(X,0)和餘數(math.inf,X) 提高ValueError異常爲任何非NaN x。如果餘下的 操作的結果爲零,則該零將具有與x相同的符號。

在使用IEEE 754二進制浮點的平臺上,此操作的結果始終可以準確表示:不引入舍入錯誤 。

Issue29962描述了創建新功能的基本原理。

1

我們可以通過使用模運算符(%)

26%7 = 5解決這一;

但是 26/7 = 3因爲它會給商,但%操作符會給餘數。