战俘错误:“无法将复杂转换为浮动”

Rom*_*Rom -1 python math

我的 Python 代码有这个问题:

from math import *

m = pow(complex(1,2)*complex(3,0) + complex(1,0),complex(-1,0));
TypeError: can't convert complex to float
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?非常感谢 !

Roa*_*ich 5

问题是您正在使用from math import *. 这pow不支持复数版本掩盖了内置函数

>>> pow(1+1j, 1)
(1+1j)
>>> import math
>>> math.pow(1+1j,2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't convert complex to float
Run Code Online (Sandbox Code Playgroud)

from <x> import * 通常被认为是不好的做法,这样的情况就是原因。

相反,您应该使用import math, 并将所有数学函数引用为,例如math.sqrt

或者,您可以使用**代替pow

>>> 1j ** 2
(-1+0j)
Run Code Online (Sandbox Code Playgroud)