问题:如何在Python中计算平方根?
为什么Python会给出“错误”的答案?
x = 16
sqrt = x**(.5)  #returns 4
sqrt = x**(1/2) #returns 1是的,我知道import math并使用sqrt。但我正在寻找以上答案。
回答 0
sqrt=x**(1/2)在做整数除法。1/2 == 0。
因此,您在第一个实例中计算x (1/2),在第二个实例中计算x (0)。
没错,这是对其他问题的正确答案。
回答 1
您必须编写:sqrt = x**(1/2.0),否则将执行整数除法并1/2返回表达式0。
此行为是在Python 2.x的“正常”,而在Python 3.x的1/2计算结果为0.5。如果您希望Python 2.x代码的行为类似于3.x wrt除法写入from __future__ import division-那么1/2将评估0.5为并向后兼容,1//2评估为0。
作为记录,计算平方根的首选方法是:
import math
math.sqrt(x)回答 2
import math
math.sqrt( x )这是对答案链的琐碎补充。但是,由于该主题在Google上非常普遍,因此我认为值得添加。
回答 3
/ 在Python 2中执行整数除法:
>>> 1/2
0如果其中一个数字是浮点数,则按预期方式工作:
>>> 1.0/2
0.5
>>> 16**(1.0/2)
4.0回答 4
您所看到的是整数除法。要默认获得浮点除法,
from __future__ import division或者,您可以将1/2的1或2转换为浮点值。
sqrt = x**(1.0/2)回答 5
这可能有点迟了,但是计算平方根的最简单,最准确的方法是牛顿法。
您有一个要计算其平方根的数字,(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()的值相同。
回答 6
可能是一种简单的记住方式:在分子(或分母)后添加点
16 ** (1. / 2)   # 4
289 ** (1. / 2)  # 17
27 ** (1. / 3)   # 3回答 7
您可以使用NumPy计算数组的平方根:
 import numpy as np
 np.sqrt([1, 4, 9])回答 8
我希望下面提到的代码能够回答您的问题。
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) 
