ฟังก์ชัน divmod() เป็นส่วนหนึ่งของไลบรารีมาตรฐานของ Python ซึ่งรับตัวเลขสองตัวเป็นพารามิเตอร์และให้ผลหาร (quotient) และเศษ (remainder) ของการหารของพวกเขาเป็น tuple (ทูเพิล) มันมีประโยชน์ในหลายการประยุกต์ทางคณิตศาสตร์ เช่น การตรวจสอบความหารลงตัวของตัวเลข และการตรวจสอบว่าตัวเลขเป็นเฉพาะหรือไม่
ไวยากรณ์
Syntax: divmod(a, b) a และ b: b หาร a a และ b เป็นจำนวนเต็มหรือทศนิยม
ตัวอย่าง
ในตัวอย่างด้านล่าง เราเห็นกรณีของทั้งจำนวนเต็มและทศนิยม เมื่อนำ divmod() ไปใช้ พวกเขาจะให้ tuple ผลลัพธ์ ซึ่งก็อาจประกอบด้วยจำนวนเต็มและค่าทศนิยม
# กับจำนวนเต็ม
print("5 and 2 give:", divmod(5, 2))
print("25 and 5 give:", divmod(25, 5))
# กับทศนิยม
print("5.6 and 2 give:", divmod(5.6, 2))
print("11.3 and 9.2 give:", divmod(11.3, 9.2))
ผลลัพธ์
5 and 2 give: (2, 1) 25 and 5 give: (5, 0) 5.6 and 2 give: (2.0, 1.5999999999999996) 11.3 and 9.2 give: (1.0, 2.1000000000000014)
ใช้ศูนย์ (Zero)
หากอาร์กิวเมนต์แรกเป็นศูนย์ เราจะได้ (0, 0) และหากอาร์กิวเมนต์ที่สองเป็นศูนย์ เราจะได้ ZeroDivisionError ตามที่คาดไว้
ตัวอย่าง
# อาร์กิวเมนต์แรกเป็นศูนย์
print("0 and 8 give:", divmod(0, 8))
# อาร์กิวเมนต์ที่สองเป็นศูนย์
print("8 and 0 give:", divmod(8, 0))
ผลลัพธ์
0 and 8 give: (0, 0)
Traceback (most recent call last):
File "xxx.py", line 6, in
print("8 and 0 give:", divmod(8, 0))
ZeroDivisionError: integer division or modulo by zero
ตรวจสอบความหารลงตัว
หากค่าที่สองของ tuple หลังการหารเป็น 0 เราจะกล่าวว่าตัวเลขแรกหารด้วยตัวเลขที่สองลงตัว มิฉะนั้น ไม่ลงตัว ตัวอย่างด้านล่าง說明สิ่งนี้
ตัวอย่าง
m = 12
n = 4
quotient, remainder = divmod(m, n)
print(quotient)
print(remainder)
if (remainder == 0):
print(m, 'is divisible by', n)
else:
print(m, 'is not divisible by', n)
ผลลัพธ์
3 0 12 is divisible by 4
ตรวจสอบว่าตัวเลขเป็นเฉพาะ (Prime)
เราสามารถใช้ divmod() เพื่อติดตามเศษที่มันสร้างเมื่อเราเริ่มหารตัวเลขด้วยตัวเลขแต่ละตัวตั้งแต่ตัวมันเองจนถึง 1 สำหรับตัวเลขเฉพาะ จำนวนเศษที่เป็นศูนย์จะมีเพียงหนึ่งเดียว เพราะไม่มีตัวเลขอื่นนอกจากตัวมันเองที่หารมันลงตัว หากจำนวนเศษศูนย์มากกว่า 1 ตัวเลขนั้นไม่ใช่เฉพาะ
ตัวอย่าง
num = 11
a = num
# นับจำนวนเศษที่มีค่าเป็นศูนย์
count = 0
while a != 0:
q, r = divmod(num, a)
a -= 1
if r == 0:
count += 1
if count > 2:
print(num, 'is not Prime')
else:
print(num, 'is Prime')
ผลลัพธ์
11 is Prime