파이썬이 왜 "잘못된"대답을합니까?
x = 16
sqrt = x**(.5) #returns 4
sqrt = x**(1/2) #returns 1
네, 알고 import math있습니다 sqrt. 그러나 위의 답변을 찾고 있습니다.
import math다음과 x = math.sqrt(25)값에 할당되는 5.0X로합니다.
파이썬이 왜 "잘못된"대답을합니까?
x = 16
sqrt = x**(.5) #returns 4
sqrt = x**(1/2) #returns 1
네, 알고 import math있습니다 sqrt. 그러나 위의 답변을 찾고 있습니다.
import math다음과 x = math.sqrt(25)값에 할당되는 5.0X로합니다.
답변:
sqrt=x**(1/2)정수 나누기를하고 있습니다. 1/2 == 0.
따라서 첫 번째 인스턴스에서 x (1/2) 를 계산 하고 두 번째 인스턴스에서 x (0) 을 계산합니다.
따라서 잘못된 것이 아닙니다. 다른 질문에 대한 정답입니다.
sqrt = x**(float(1)/2)
작성해야합니다. sqrt = x**(1/2.0)그렇지 않으면 정수 나누기가 수행되고 표현식이 1/2반환됩니다.0 .
이 동작은 Python 2.x에서 "정상"인 반면 Python 3.x에서는로 1/2평가됩니다 0.5. 당신이 당신의 파이썬 2.x에서 코드가 3.X의 WRT 부문 쓰기처럼 행동하려는 경우 from __future__ import division- 다음 1/2에 평가합니다 0.5및 이전 버전과의 호환성을 위해 1//2로 평가합니다 0.
그리고 기록을 위해 제곱근을 계산하는 기본 방법은 다음과 같습니다.
import math
math.sqrt(x)
대답하기에는 약간 늦었지만 제곱근을 계산하는 가장 간단하고 정확한 방법은 뉴턴의 방법입니다.
제곱근을 계산할 숫자가 있고 제곱근을 (num)추측 할 수 있습니다 (estimate). 견적은 0보다 큰 숫자 일 수 있지만 의미가있는 숫자는 재귀 호출 깊이를 크게 단축시킵니다.
new_estimate = (estimate + num / estimate) / 2
이 선은이 두 모수로보다 정확한 추정값을 계산합니다. new_estimate 값을 함수에 전달하고 이전 값보다 정확한 다른 new_estimate를 계산하거나 이와 같은 재귀 함수 정의를 만들 수 있습니다.
def newtons_method(num, estimate):
# Computing a new_estimate
new_estimate = (estimate + num / estimate) / 2
print(new_estimate)
# Base Case: Comparing our estimate with built-in functions value
if new_estimate == math.sqrt(num):
return True
else:
return newtons_method(num, new_estimate)
예를 들어 30의 제곱근을 찾아야합니다. 결과는 5와 6 사이라는 것을 알고 있습니다.
newtons_method(30,5)
각 재귀 호출의 결과는 다음과 같습니다.
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
마지막 결과는 제곱근의 가장 정확한 계산입니다. 내장 함수 math.sqrt ()와 동일한 값입니다.
NumPy를 사용하여 배열의 제곱근을 계산할 수 있습니다.
import numpy as np
np.sqrt([1, 4, 9])
아래 언급 된 코드가 귀하의 질문에 대답하기를 바랍니다.
def root(x,a):
y = 1 / a
y = float(y)
print y
z = x ** y
print z
base = input("Please input the base value:")
power = float(input("Please input the root value:"))
root(base,power)