小编典典

ValueError:负数不能提高到小数幂

python

当我在终端尝试这个

>>> (-3.66/26.32)**0.2

我收到以下错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: negative number cannot be raised to a fractional power

但是,我可以分两个步骤执行此操作,例如,

>>> (-3.66/26.32)
-0.13905775075987842
>>> -0.13905775075987842 ** 0.2
-0.6739676327771593

为什么会有这种行为?用单行解决此问题的方法是什么?


阅读 224

收藏
2020-12-20

共1个答案

小编典典

提高功率优先于一元减号。

因此,您拥有的-(0.13905775075987842 ** 0.2)却不(-0.13905775075987842) ** 0.2是您所期望的:

>>> -0.13905775075987842 ** 0.2
-0.6739676327771593
>>> (-0.13905775075987842) ** 0.2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: negative number cannot be raised to a fractional power

如果您希望它起作用,您应该写 (-3.66/26.32 + 0j)**0.2

>>> (-3.66/26.32 + 0j)**0.2
(0.5452512685753758+0.39614823506888347j)

或按照@TimPietzcker的说明切换Python 3。

2020-12-20