爲什麼python會給出「錯誤」的答案?如何在python中計算平方根?
x= 16
sqrt= x**(.5)
returns 4
sqrt= x**(1/2)
returns 1
是的,我知道import math
,並使用sqrt
。但我正在尋找上述答案。
爲什麼python會給出「錯誤」的答案?如何在python中計算平方根?
x= 16
sqrt= x**(.5)
returns 4
sqrt= x**(1/2)
returns 1
是的,我知道import math
,並使用sqrt
。但我正在尋找上述答案。
sqrt=x**(1/2)
正在做整數除法。 1/2 == 0
。
所以你計算X (1/2)在一審,X (0)第二。
所以這沒有錯,它是對不同問題的正確答案。
「所以這沒有錯,它是對另一個問題的正確答案」 - 愛它! - 想想我可能會挑戰自己更頻繁地使用這個詞組! Python 3.6中的 – 2016-04-27 07:50:35
對於你第一次提問的問題,你得到了正確的答案。 – vwvan 2017-04-11 04:40:16
/
執行在Python 2的整數除法:
>>> 1/2
0
如果其中一個號碼是float,它按預期工作:
>>> 1.0/2
0.5
>>> 16**(1.0/2)
4.0
你必須寫:sqrt = x**(1/2.0)
,否則執行整數除法並且表達式1/2
返回0
。
此行爲在Python 2.x中爲「正常」,而在Python 3.x中,1/2
評估爲0.5
。如果你希望你的Python 2.x代碼的行爲像3.x w.r.t.分部寫from __future__ import division
- 然後1/2
將評估爲0.5
和向後兼容性,1//2
eill評估爲0
。
並記錄在案,計算平方根的首選方式是這樣的:
import math
math.sqrt(x)
+1也用於回答標題中的問題。 – 2012-03-07 06:01:00
負面的1不讀問題... – Merlin 2015-10-02 03:13:37
你看到的是整數除法。爲了得到默認的浮點除法,
from __future__ import division
或者,你可以將1或2的1/2轉換爲浮點值。
sqrt = x**(1.0/2)
您可以使用numpy的計算陣列
import numpy as np
np.sqrt([1,4,9])
的平方根我希望下面提到的代碼會回答你的問題。
from __future__ import print_function
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)
問候, 阿里
這可能是晚了一點回答,但最簡單而準確的方法來計算平方根是牛頓的方法。
你有一個數字,你想要計算它的平方根(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)
之間的號碼是30和估計5.每個遞歸調用的結果是:
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
最後的結果是最準確的計算數字的平方根。它與內置函數math.sqrt()具有相同的值。
嘗試在Python 3中,它是固定的;) – 2012-03-07 02:53:38
用'import math'計算python中的平方根,然後用'x = math.sqrt(25)'將x值賦值爲5.0。 – 2016-02-06 15:25:48
那裏有誤導性的標題...... – Julian 2017-07-13 09:47:27