当我在终端
尝试此操作时>>> (-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
为什么会这样?单行解决这个问题的方法是什么?
答案 0 :(得分:18)
提升能力优先于一元减号。
所以你有-(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。
答案 1 :(得分:7)
切换到Python 3,它会自动将结果提升为复数:
>>> (-3.66/26.32)**0.2
(0.5452512685753758+0.39614823506888347j)