在数学中,如果我想计算 3 的 2 次方,则不需要符号,但我写了 2 small: 3²
。在 Python 中,此操作似乎由**
语法表示。
>>> 3**2
9
如果我想去另一个方向并计算 9 的第二个根,那么在数学中我需要使用一个符号:2√9 = 3
Python中是否有一个速记符号,类似于**
实现这个 ie 2<symbol>9
?还是我需要使用该math
模块?
在数学中,如果我想计算 3 的 2 次方,则不需要符号,但我写了 2 small: 3²
。在 Python 中,此操作似乎由**
语法表示。
>>> 3**2
9
如果我想去另一个方向并计算 9 的第二个根,那么在数学中我需要使用一个符号:2√9 = 3
Python中是否有一个速记符号,类似于**
实现这个 ie 2<symbol>9
?还是我需要使用该math
模块?
x
is的第 n 个根,例如x^(1/n)
,您可以9**(1/2)
找到 9 的第 2 个根。通常,您可以将 x 的第 n 个根计算为:
x**(1/n)
注意1/float(n)
:在 Python 2 中,您必须这样做才能1.0/n
使结果为 afloat
而不是int
. 有关更多详细信息,请参阅Python 为什么给出平方根的“错误”答案?
您还可以使用一些对数:
的第 N 个根x
:
exp(log(x)/n)
例如:
>>> from math import exp, log
>>> x = 8
>>> n = 3
>>> exp(log(x)/n)
2.0
另外:x**(n**-1)
, 相同但短于x**(1/float(n))
如果您更喜欢以函数方式应用此操作而不是使用中缀运算符(**
符号),则可以将基数和指数作为参数传递给pow
函数:
In [23]: (9**(0.5)) == pow(9, 0.5)
Out[23]: True
我也喜欢在 Python 中找到这个 Infix hack 的新用途,尽管它比重型解决方案更有趣。但是您可以通过执行以下操作有效地为此制作自己的个人符号:
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
有。这只是**
=)
任何第 n 根是 的幂1/n
,所以要得到 9 的平方根,你使用9**(1/2)
(或9**0.5
) 得到立方根,你使用9 ** (1/3)
(我们不能用更简单的分数来写),并得到第 n 根,9 ** (1/n)
.
另请注意,从 Python 3 开始,不再需要向整数添加句点以使其成为浮点数。说1/3
是按照你实际期望的方式工作,给出0.333...
结果,而不是零。对于 Python 的旧版本,您必须记住使用那个时期(但也非常想知道为什么要使用编程语言的旧版本)
基本上 sqrt(9) 相当于 9^.5
>>>9**.5
3.0
你应该做
16**(0.5) #If you print it, you get 4, So you can use this formula.
def nthrootofm(a,n):
return pow(a,(1/n))
a=81
n=4
q=nthrootofm(a,n)
print(q)
pow() 函数有两个参数。