我正在编写一个使用python2.7计算复数乘法的函数。功能是:
server2
但是当我运行它时,我收到了这个错误:
在complexNumberMultiply中 返回'%s +%si' %(c * e - d * f,c * f + d * e)
的非int
TypeError:不能将序列乘以类型' str'
我的问题是,为什么我的int(d [: - 1])没有将字符串(例如-2)变成整数?
答案 0 :(得分:2)
您已将d
和f
转换为int
,但c
和e
呢?您正在尝试执行c * e
,并且不能将字符串乘以字符串。
考虑:
def complexNumberMultiply(a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
split_a = a.split('+')
split_b = b.split('+')
c, d = int(split_a[0]), int(split_a[-1][0])
e, f = int(split_b[0]), int(split_b[-1][0])
print (c,d,e,f)
return '%s + %si' % (c * e - d * f, c * f + d * e)
print(complexNumberMultiply('1+2i', '3+4i'))
# 1 2 3 4
# -5+10i
或者使用Python中内置类型的complex
:
>>> complex('1+2j') * complex('3+4j')
(-5+10j)
>>> (1+2j) * (3+4j)
(-5+10j)
答案 1 :(得分:2)
虚数在Python中被识别为对象,就像整数,浮点数......:
>>> complexN = 33 + 2j
>>> complexN
(33+2j)
>>> complexN.real # real part
33.0
>>> complexN.imag # imaginary part
2.0
添加复数:
>>> complex + (33+2j)
(66+4j)
2j
是虚部,实部是33.这是在Python中处理复数的推荐方法。
但是如果你坚持使用你的功能进行实验,我不会想到使用str
然后转换为int
是一个好方法。为什么不直接使用数字呢?通过这种方式,您可以避免格式化函数输入的花边和口哨声。