麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 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函數在各種情況下的執行情況。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产午夜免费视频 | 国产精品视频yy9299一区 | 成人在线观看免费 | 久久精品视频在线免费观看 | 精品一区二区三区免费看 | 一区二区三区欧美日韩 | 久久黄色影院 | 夜添久久精品亚洲国产精品 | 男女隐私免费视频 | 97中文字幕第一一一页 | 视频在线中文字幕 | 国产日韩三区 | 亚洲成人在线视频网 | 欧美精品一级 | 成人羞羞国产免费游戏 | 久久精品资源 | 国产乱色精品成人免费视频 | 免费国产不卡午夜福在线 | 国产喷白浆10p | 99精品国产成人一区二区 | 91小视频在线观看免费版高清 | 欧美日本一区二区 | 中国久久久 | 久久精品视频免费观看 | 日本在线观看中文字幕 | www.99xxxx.com| 国产91免费看 | 2级毛片 | 操操操操操| 黄色片免费在线播放 | 国产毛片网站 | 91精品国产乱码久久久久久久久 | 久章草影院| 免费国产在线观看 | 欧美精品18 | 午夜视频色 | 日本大片在线播放 | 亚洲欧美在线视频免费 | 欧美韩国一区 | 爱高潮www亚洲精品 国产精品一区自拍 | 久久精品亚洲国产奇米99 |