国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Python > 正文

Python中divmod()函數的使用方法

2023-04-25 12:32:01
字體:
來源:轉載
供稿:網友

divmod()函數也是Python的內置函數之一,其作用是對傳入的兩個數值(不能是復數)做除法運算和求余運算。

語法格式

Python中divmod()函數的語法格式如下:

divmod(a, b)

該函數有a, b兩個參數,都是數值類型的,包括其它進制的數值,但不能是復數。其中,a是被除數(分子),b是除數(分母)。

該函數的返回值是一個元組,包含a與b兩個數的商及其余數。

對于整型參數,其結果相當于(a // b, a % b);

對于浮點數,其結果是( q, a % b),q通常是math.floor(a / b),但也可能比其小1。在任何情況下,q * a + a % b都非常接近a。如果 a % b是非零值,結果與b的符號相同,同時,0 <= abs(a % b) < abs(b)

上面敘述中,"//"運算符是求兩個數商的整數部分;math.floor()是下舍取整函數,如math.floor(-35.3) = -36.0,math.floor(23.8) = 23.0;

abs()是求某數絕對值的函數,詳見本站:Python中的abs()函數一文中的相關介紹。

Python divmod函數

Python的divmod()函數用于整數中

Python divmod()函數用于兩個整數間,返回兩個數的商與余數構成的元組。

#對于整數,輸出包含其商和余數的元組
dm = divmod(13, 5)
print(dm)

#可以使用兩個變量來分別接收其商和余數
x, y = divmod(13, 5)
print(x)
print(y)

其輸出結果如下所示:

(2, 3)
2
3

在Python 3.8.2中運行的結果如下圖所示:

Python divmod函數用于整數中

Python divmod()函數用于浮點數中

當向函數中傳遞的參數為浮點數時,divmod函數用于兩個符號相同的浮點數時,其使用與整數類似的方式計算其商和余數。但用于異號的兩個浮點數時,其商部分的值是兩個數的商下舍后,再求其余數部分,比如參數取5和-2.3時,其真正的商約是-2.1739,那么使用divmod()函數時,其結果中的商值下舍后為-3,則其余數部分為:5-(-2.3)*(-3) = -1.9,即余數部分的絕對值約為1.9,其符號與除數相同,最終為-1.9。實際上,在Python中divmod(5, -2.3)的輸出結果為:(-3.0, -1.8999999999999995)。

#用于浮點數中
dm1 = divmod(10, 2.5)
print("dm1=", dm1)
dm2 = divmod(13, 3.2)
print("dm2=", dm2)
dm3 = divmod(12.4, 3.2)
print("dm3=", dm3)
dm4 = divmod(12.4, -3.2)
print("dm4=", dm4)
dm5 = divmod(-12.4, 3.2)
print("dm5=", dm5)
dm6 = divmod(-12.4, -3.2)
print("dm6=", dm6)

輸出結果如下:

dm1= (4.0, 0.0)
dm2= (4.0, 0.1999999999999993)
dm3= (3.0, 2.8)
dm4= (-4.0, -0.40000000000000036)
dm5= (-4.0, 0.40000000000000036)
dm6= (3.0, -2.8)

在Python3.8.2中的輸出情形如下圖所示:

Python divmod函數用于浮點數中

上面例子中,因為小數表示的精度問題,輸出結果有令人驚愕的效果。

Python divmod用于其它進制中

Python divmod函數也可以用于其它進制中的參數中,同時可以不同進制之間混用。

其輸出結果都是十進制形式。

#用于其它進制
dm7 = divmod(10, 0b110)
print("dm7=", dm7)
dm8 = divmod(0xAF, 0b110)
print("dm8=", dm8)
dm9 = divmod(0xAF, 0O17)
print("dm9=", dm9)

輸出結果如下:

dm7= (1, 4)
dm8= (29, 1)
dm9= (11, 10)

Python divmod函數使用中的一些異常情況

在上面說過,Python中的divmod()函數不能使用于復數;從常識的角度來講,第二個參數不能為0.下面使用例子來說明這些情況下的輸出情況。

#一些異常情況
print(divmod(3 + 4j, 2))
print(divmod(9 + 5j, 4 + 2j))
print(divmod(11, 0))
print(divmod((5,4),(3,3)))

以上三個例子分別執行時,前兩個報錯的異常信息相同,即TypeError: can't take floor or mod of complex number.

第3個執行時的異常信息為:ZeroDivisionError: integer division or modulo by zero.

第4個執行時的異常信息為:TypeError: unsupported operand type(s) for divmod(): 'tuple' and 'tuple'.

以上是關于Python divmod函數在各種情況下的執行情況。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 社会| 绍兴县| 山西省| 万源市| 德保县| 商水县| 阜康市| 荔浦县| 南汇区| 广元市| 随州市| 托克逊县| 文山县| 维西| 丹江口市| 新沂市| 正镶白旗| 潮州市| 龙海市| 浮梁县| 永嘉县| 乌海市| 河东区| 镇巴县| 黄山市| 安远县| 长宁县| 北辰区| 三亚市| 织金县| 宜兰县| 和硕县| 朝阳县| 麻江县| 黄陵县| 琼海市| 濉溪县| 陇川县| 封丘县| 陆川县| 乌审旗|