파이썬이 왜 "잘못된"대답을합니까?
x = 16
sqrt = x**(.5) #returns 4
sqrt = x**(1/2) #returns 1
네, 알고 import math
있습니다 sqrt
. 그러나 위의 답변을 찾고 있습니다.
import math
다음과 x = math.sqrt(25)
값에 할당되는 5.0
X로합니다.
파이썬이 왜 "잘못된"대답을합니까?
x = 16
sqrt = x**(.5) #returns 4
sqrt = x**(1/2) #returns 1
네, 알고 import math
있습니다 sqrt
. 그러나 위의 답변을 찾고 있습니다.
import math
다음과 x = math.sqrt(25)
값에 할당되는 5.0
X로합니다.
답변:
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)