在Python中是否有x的n根的缩写?
简单的语法问题 在数学中,如果我有两个数字3和2,我想计算3到2的幂,那么不需要符号,但我写两个小的。在在Python中是否有x的n根的缩写?,python,math,operators,Python,Math,Operators,简单的语法问题 在数学中,如果我有两个数字3和2,我想计算3到2的幂,那么不需要符号,但我写两个小的。在Python中,此操作似乎由**语法表示 >>> 3**2 9 如果我想去另一个方向,计算9的第二个根,那么在数学中,我需要使用一个符号: Python中是否有一个类似于**的简写符号来实现这一点,即29。或者我需要使用math模块吗?x的第n个根是x^(1/n),因此您可以执行9**(1/2.0)来查找例如9的第二个根。通常,可以将x的第n个根计算为: x**(1/fl
Python
中,此操作似乎由**
语法表示
>>> 3**2
9
如果我想去另一个方向,计算9的第二个根,那么在数学中,我需要使用一个符号:
Python中是否有一个类似于
**
的简写符号来实现这一点,即29
。或者我需要使用math
模块吗?x的第n个根是x^(1/n)
,因此您可以执行9**(1/2.0)
来查找例如9的第二个根。通常,可以将x的第n个根计算为:
x**(1/float(n))
您还可以执行1.0/n
而不是1/float(n)
。它是必需的,因此结果是一个float
而不是int
基本上sqrt(9)等于9^.5>>>9**.5
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的旧版本,您必须记住使用该时间段(但也非常奇怪为什么要使用编程语言的旧版本)另外:x**(n**-1)
,它与您应该执行的x**(1/float(n))
16**(0.5) #If you print it, you get 4, So you can use this formula.
如果您希望在功能上应用此操作,而不是使用中缀运算符(符号
**
),则可以将基和指数作为参数传递给pow
函数:
In [23]: (9**(0.5)) == pow(9, 0.5)
Out[23]: True
我也喜欢为它寻找新的用途,尽管这与其说是一个繁重的解决方案,不如说是一种乐趣。但你可以通过以下方式有效地制作自己的个人标志:
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根:
X = exp(log(n)/x)
知道
x
到1/n
的幂与x
的n
根相同可能会有帮助。确保在Python 2中使用**1.0/n
而不是**1/n
,因为整数除法。一旦你看到答案是多么简单,你知道为什么没有专门的语法了。@MarkRansom-我知道Mark:虽然这是我差点删除的问题之一-然后离开一两分钟-结果问题简单(愚蠢)导致了一些有趣的答案。@MarkRansom为我辩护,尽管Mark-在数学中我们不写9^(1/2)当我们需要9的平方根时-我想可能有一个语法等价于数学范数。在Python 3中,不需要强制结果为浮点,它会自动发生。@MarkRansom谢谢-我正在使用3.2.2
,看看你的意思>8**(1/3)=2
或dox**(1./n)
在Python2.x上打印1,因为1/2返回0。@NacibNeme-在3.2.2中可以使用:Python2.7.5+(默认,2013年9月17日,17:31:54)[GCC 4.8.1]在linux2上键入“帮助”、“版权”、“信用”或“许可证”以获取更多信息。>>16**(0.5)4.0>>
然而,它并不比x**(1./n)
短,而且可能精度稍低(但同样,计算n次根的整个方法都不是最优的)。对不起,这是另一种方法-exp(log(x)/n)
X = exp(log(n)/x)