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

Python ValueError:วิธีแก้ปัญหาข้อผิดพลาดของโดเมนคณิตศาสตร์

ในวิชาคณิตศาสตร์ มีการดำเนินการที่ไม่ได้ผลกับตัวเลขติดลบหรือเลขศูนย์ พิจารณารากที่สองเป็นต้น คุณไม่สามารถหารากที่สองของจำนวนลบได้ 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