Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

divmod() ใน Python และการประยุกต์ใช้

ฟังก์ชัน 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