国产探花免费观看_亚洲丰满少妇自慰呻吟_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函數在各種情況下的執行情況。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梁平县| 兴安盟| 淮安市| 龙川县| 新宾| 霞浦县| 和政县| 阿拉善右旗| 屏南县| 腾冲县| 清苑县| 柘荣县| 法库县| 沛县| 厦门市| 肃北| 峨山| 镇江市| 调兵山市| 凤凰县| 乌拉特前旗| 肇东市| 绥江县| 宽城| 白朗县| 通渭县| 富蕴县| 阳曲县| 阳春市| 阳信县| 渑池县| 舟山市| 神木县| 赣州市| 白水县| 海阳市| 双峰县| 陕西省| 陕西省| 砚山县| 常德市|