这是我的复数:我正在从文件中检索它。
re, im = line[11:13]
print( re ) # -4.04780617E-02
print( im ) # +4.09889424E-02
目前它只是一对弦乐。 如何将这些组合成一个复数?
我已经尝试了五次。
z = complex( re, im )
# ^ TypeError: complex() can't take second arg if first is a string
z = complex( float(re), float(im) )
# ^ ValueError: could not convert string to float: re(tot)
z = float(re) + float(im) * 1j
# ^ ValueError: could not convert string to float: re(tot)
z = complex( "(" + re + im + "j)" )
# ValueError: complex() arg is a malformed string
z_str = "(%s%si)" % (re, im) # (-4.04780617E-02+4.09889424E-02i)
z = complex( z_str )
# ValueError: complex() arg is a malformed string
答案 0 :(得分:5)
Python使用'j'作为虚部的后缀:
>>> complex("-4.04780617E-02+4.09889424E-02j")
(-0.0404780617+0.0409889424j)
在你的情况下,
z_str = "(%s%sj)" % (re, im) # (-4.04780617E-02+4.09889424E-02i)
z = complex( z_str )
答案 1 :(得分:2)
z = complex(float(re), float(im))
答案 2 :(得分:0)
要将字符串转换为复数,您需要做的就是
c = complex(str)
其中str是一个形式为“a + bj”或“a * bj”的字符串,如“-5-3j”
但是,如果您将实部和虚部分开作为字符串对。您可以执行以下操作
c = complex(float(re),float(im))