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

divmod() ใน Python และแอปพลิเคชัน


divmod() เป็นส่วนหนึ่งของไลบรารีมาตรฐานของ python ซึ่งใช้ตัวเลขสองตัวเป็นพารามิเตอร์ และให้ผลหารและส่วนที่เหลือของการหารเป็นทูเพิล มีประโยชน์ในการใช้งานทางคณิตศาสตร์หลายอย่าง เช่น การตรวจสอบการหารของตัวเลขและการหาว่าจำนวนนั้นเป็นจำนวนเฉพาะหรือไม่

ไวยากรณ์

Syntax: divmod(a, b)
a and b : b divides a
a and b are integers or floats

ตัวอย่าง

ในตัวอย่างด้านล่าง ให้ดูกรณีของทั้งจำนวนเต็มและจำนวนทศนิยม ในแอปพลิเคชันของ divmod() พวกเขาให้ tuple ที่เป็นผลลัพธ์แก่เรา ซึ่งสามารถประกอบด้วยจำนวนเต็มและค่าทศนิยมได้

# with integers
print("5 and 2 give:",divmod(5,2))
print("25 and 5 give:",divmod(25,5))

# with Floats
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)

การใช้ศูนย์

ถ้าอาร์กิวเมนต์แรกเป็นศูนย์ เราจะได้ (0,0) และหากอาร์กิวเมนต์ที่สองเป็นศูนย์ เราก็จะได้รับข้อผิดพลาด Zerodivision ตามที่คาดไว้

ตัวอย่าง

# With first argument as zero
print("0 and 8 give:",divmod(0,8))

# With second argument as zero
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

ตรวจสอบการหาร

หากค่าที่สองของทูเพิลหลังการหารเป็น 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

ตรวจสอบว่า Number เป็น Prime หรือไม่

เราสามารถใช้ divmod() เพื่อติดตามตัวเตือนที่สร้างขึ้นเมื่อเราเริ่มหารตัวเลขด้วยตัวเลขแต่ละตัวที่ขึ้นต้นด้วยตัวมันเองจนถึง 1 สำหรับจำนวนเฉพาะ เศษศูนย์จะเหลือเพียงตัวเดียว เพราะจะไม่มีตัวเลขอื่นใดนอกจากตัวมันเองมาหาร มันอย่างสมบูรณ์แบบ หากจำนวนเศษเหลือศูนย์มากกว่า 1 แสดงว่าจำนวนนั้นไม่ใช่จำนวนเฉพาะ

ตัวอย่าง

num = 11
a = num
# counter the number of remainders with value zero
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