ในวิชาคณิตศาสตร์ มีการดำเนินการที่ไม่ได้ผลกับตัวเลขติดลบหรือเลขศูนย์ พิจารณารากที่สองเป็นต้น คุณไม่สามารถหารากที่สองของจำนวนลบได้ Python ตระหนักดีว่าการดำเนินการบางอย่างอาจไม่สามารถใช้งานได้กับตัวเลขที่เป็นค่าลบหรือศูนย์
Python จะทำให้เกิดข้อผิดพลาดเมื่อคุณพยายามใช้ตัวเลขติดลบในการดำเนินการที่ไม่รองรับ ในคู่มือนี้ เราจะพูดถึงสาเหตุของ ValueError: math domain error
. ในช่วงท้ายของคู่มือ เราจะแนะนำวิธีแก้ปัญหานี้
ValueError:ข้อผิดพลาดของโดเมนคณิตศาสตร์
Python ValueError: math domain error
จะเพิ่มขึ้นเมื่อคุณใช้ตัวเลขที่ไม่สนับสนุนโดยการดำเนินการทางคณิตศาสตร์ ข้อผิดพลาดนี้มักเกิดขึ้นกับ sqrt()
เมธอดและ log()
กระบวนการ.
ValueError เป็นข้อผิดพลาดประเภทหนึ่งที่ระบุว่าคุณกำลังดำเนินการทางคณิตศาสตร์กับค่าที่ไม่สามารถใช้งานได้กับการดำเนินการนั้น ในกรณีของ "ข้อผิดพลาดของโดเมนคณิตศาสตร์" เรากำลังใช้จำนวนลบหรือเลขศูนย์ที่เราไม่ควรเป็น
มาดูตัวอย่างของ ValueError: math domain error
ปัญหาในการดำเนินการ
ตัวอย่างสถานการณ์
เรากำลังสร้างโปรแกรมที่คำนวณรากที่สองของตัวเลขที่กำหนด โปรแกรมนี้ออกแบบมาเพื่อช่วยให้นักเรียนทบทวนความรู้เกี่ยวกับรากที่สองของพวกเขา
มาเขียนโปรแกรมที่คำนวณรากที่สองของจำนวนที่กำหนดกัน เราจะเริ่มต้นด้วยการนำเข้าไลบรารีคณิตศาสตร์ที่เราจำเป็นต้องคำนวณรากที่สอง:
import math
ต่อไป เราจะรวบรวมหมายเลขจากผู้ใช้:
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
number = input("Try solving the problem first using pencil and paper. Then, insert the number whose square root you want to verify: ")
เราแจ้งให้ผู้ใช้ลองค้นหาคำตอบด้วยตนเอง เนื่องจากโปรแกรมของเราได้รับการออกแบบมาเพื่อช่วยให้ผู้คนตรวจสอบคำตอบของพวกเขา ต่อไป เราจะหารากที่สองของค่าที่ผู้ใช้แทรก:
answer = math.sqrt(int(number))
เราแปลงค่าของ “ตัวเลข” ซึ่งเก็บตัวเลขที่มีรากที่สองที่ผู้ใช้ต้องการค้นหาเป็นจำนวนเต็ม นี่เป็นสิ่งจำเป็นเพราะ input()
วิธีที่เราใช้ในการรวบรวมหมายเลขดังกล่าวจะส่งกลับสตริง เราไม่พบรากที่สองของค่าสตริง
สุดท้าย ให้พิมพ์คำตอบไปที่คอนโซล:
print("The square root of {} is {}.".format(number, answer))
เราใช้ format()
คำสั่งเพื่อเพิ่มตัวเลขในสตริงของเรา สตริงของเราจะแสดง:
"The square root of [Number user inserted] is [The square root our program calculated]"
มาทดสอบโปรแกรมของเราด้วยจำนวนลบ:
Try solving the problem first using pencil and paper. Then, insert the number whose square root you want to verify: -16 Traceback (most recent call last): File "test.py", line 5, in <module> answer = math.sqrt(int(number)) ValueError: math domain error
เราใส่ค่า -16
ลงในโปรแกรมของเรา รหัสของเราส่งคืนข้อผิดพลาด
มาแก้ไขข้อผิดพลาดนี้กันเถอะ
การแก้ปัญหา
เพื่อแก้ไขข้อผิดพลาดนี้ เราต้องแจ้งให้ผู้ใช้ทราบว่าคุณไม่สามารถคำนวณรากที่สองของจำนวนลบก่อนที่เราจะดำเนินการ math.sqrt()
การทำงาน.
มาแก้ไขโค้ดของเราเพื่อให้สิ่งนี้เกิดขึ้น:
import math number = input("Try solving the problem first using pencil and paper. Then, insert the number whose square root you want to verify: ") if int(number) >= 0: answer = math.sqrt(int(number)) print("The square root of {} is {}.".format(number, answer)) else: print("You cannot find the square root of a number less than 0.")
เราใช้ if
คำสั่งตรวจสอบว่าจำนวนที่ผู้ใช้ใส่ลงในโปรแกรมมีค่าเท่ากับหรือมากกว่าศูนย์หรือไม่ หากตัวเลขตรงตามเกณฑ์นี้ เนื้อหาของ if
รันคำสั่ง มิฉะนั้น else
คำสั่งดำเนินการแสดงข้อความที่เราใส่หมายเลขที่ไม่ถูกต้อง
เรียกใช้โปรแกรมของเราอีกครั้ง โปรแกรมของเรากลับมา:
Try solving the problem first using pencil and paper. Then, insert the number whose square root you want to verify: -16 You cannot find the square root of a number less than 0.
รหัสของเราทำงานสำเร็จ
บทสรุป
ValueError: math domain error
จะเพิ่มขึ้นเมื่อคุณดำเนินการฟังก์ชันทางคณิตศาสตร์กับจำนวนลบหรือศูนย์ซึ่งไม่สามารถคำนวณได้ เพื่อแก้ไขข้อผิดพลาดนี้ ตรวจสอบให้แน่ใจว่าคุณใช้ตัวเลขที่ถูกต้องสำหรับฟังก์ชันทางคณิตศาสตร์ที่คุณกำลังใช้
หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ดใน Python โปรดดูคู่มือ How to Learn Python ของเรา คู่มือนี้ประกอบด้วยแหล่งข้อมูลการเรียนรู้ หลักสูตร และหนังสือจำนวนมากที่ออกแบบมาสำหรับผู้ที่กำลังเรียนภาษาโปรแกรม Python