在Python中是否存在x的第n个根的简写

时间:2013-10-08 18:08:46

标签: python math operators

简单的语法问题。

在数学中如果我有两个数字3和2并且我希望计算3到2的幂,那么不需要符号但是我写了两个小符号。在Python中,此操作似乎由**语法表示。

>>> 3**2
9

如果我想转向另一个方向并计算9的第2根,那么在数学中我需要使用符号:

nth root of x

Python中是否有一个简写符号,类似于**实现了这一点,即{。{}}。或者我是否需要使用2<symbol>9模块?

8 个答案:

答案 0 :(得分:39)

x的第n个根是x^(1/n),因此您可以9**(1/2.0)找到9的第2个根,例如。通常,您可以将x的第n个根计算为:

x**(1/float(n))

您也可以1.0/n代替1/float(n)。这是必需的,结果是float而不是int

答案 1 :(得分:2)

另外:x**(n**-1),与x**(1/float(n))

相同但更短

答案 2 :(得分:2)

如果您希望在功能上而不是使用中缀运算符(**符号)应用此操作,则可以将base和exponent作为参数传递给pow函数:

In [23]: (9**(0.5)) == pow(9, 0.5)
Out[23]: True

我也喜欢寻找this Infix hack in Python的新用途,尽管它比一个重型解决方案更有趣。但是你可以通过以下方式有效地制作自己的个人符号:

class Infix:
    def __init__(self, function):
        self.function = function
    def __ror__(self, other):
        return Infix(lambda x, self=self, other=other: self.function(other, x))
    def __or__(self, other):
        return self.function(other)
    def __rlshift__(self, other):
        return Infix(lambda x, self=self, other=other: self.function(other, x))
    def __rshift__(self, other):
        return self.function(other)
    def __call__(self, value1, value2):
        return self.function(value1, value2)


root_of = Infix(lambda x,y: y**(1.0/x))

print 2 |root_of| 9
3.0

答案 3 :(得分:1)

基本上sqrt(9)相当于9 ^ .5

>>>9**.5
3.0

答案 4 :(得分:1)

有。这只是** =)

任何第n个根都是1/n的取幂,所以为了得到平方根9,你使用9**(1/2)(或9**0.5)来获取立方根,你使用{{ 1}}(我们不能用更简单的部分写),并获得第n个根,9 ** (1/3)

另请注意,从Python 3开始,不再需要为整数添加句点以使它们成为浮点数。假设9 ** (1/n)按照您实际期望的方式工作,给出1/3作为结果,而不是零。对于旧版本的Python,你必须记住使用那个时期(但也很关键,为什么你要使用遗留版本的编程语言)

答案 5 :(得分:1)

你应该做

16**(0.5) #If you print it, you get 4, So you can use this formula.

答案 6 :(得分:1)

def nthrootofm(a,n):
    return pow(a,(1/n))
a=81
n=4
q=nthrootofm(a,n)
print(q)

pow()函数带有两个参数。

答案 7 :(得分:1)

您还可以使用一些对数:

第N个根:

 X = exp(log(n)/x)