Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python ValueError:수학 도메인 오류 솔루션

수학에는 음수 또는 0에 대해 작동하지 않는 연산이 있습니다. 예를 들어 제곱근을 고려하십시오. 음수의 제곱근을 찾을 수 없습니다. Python은 모든 연산이 음수 또는 0으로 작동하는 것은 아님을 인식합니다.

지원하지 않는 작업에 음수를 사용하려고 하면 Python에서 오류가 발생합니다. 이 가이드에서는 ValueError: math domain error의 원인에 대해 이야기할 것입니다. . 가이드의 마지막 부분에서 이 문제에 대한 솔루션을 살펴보겠습니다.

ValueError:수학 도메인 오류

Python ValueError: math domain error 수학 연산에서 지원하지 않는 숫자를 사용할 때 발생합니다. 이 오류는 일반적으로 sqrt()에서 발생합니다. 메소드 및 log() 방법.

ValueError는 해당 연산에서 작동하지 않는 값에 대해 수학 연산을 수행하고 있음을 나타내는 오류 유형입니다. "수학 영역 오류"의 경우, 우리가 있어서는 안 되는 음수 또는 0을 사용하고 있습니다.

ValueError: math domain error의 예를 살펴보겠습니다. 실행 중인 문제

예시 시나리오

우리는 주어진 숫자의 제곱근을 계산하는 프로그램을 만들고 있습니다. 이 프로그램은 학생들이 제곱근에 대한 지식을 수정할 수 있도록 고안되었습니다.

주어진 수의 제곱근을 계산하는 프로그램을 작성해 봅시다. 제곱근을 계산하는 데 필요한 수학 라이브러리를 가져오는 것으로 시작하겠습니다.

import math

다음으로 사용자로부터 번호를 수집합니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

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를 사용합니다. 사용자가 프로그램에 삽입한 숫자가 0보다 크거나 같은지 확인하는 명령문. 숫자가 이 기준을 충족하면 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 계산할 수 없는 음수 또는 0에 대해 수학 함수를 수행할 때 발생합니다. 이 오류를 해결하려면 사용 중인 수학 함수에 유효한 숫자를 사용하고 있는지 확인하십시오.

Python 코딩에 대해 자세히 알아보려면 Python 학습 방법 가이드를 확인하세요. 이 가이드에는 Python 프로그래밍 언어를 배우는 사람들을 위해 설계된 다양한 학습 리소스, 과정 및 책이 포함되어 있습니다.