두 개의 input에는 복소수(complex number)가 string 으로 주어집니다. 복소수란 a+bi 의 형태로, 실수와 허수로 이루어진 수입니다.
input으로 받은 두 수를 곱해서 반환해주세요. 반환하는 표현도 복소수 형태의 string 이어야 합니다.
def complex_number_multiply(a, b):
a = a.replace('i', 'j')
b = b.replace('i', 'j')
exp = '('+ a + ')'+ '*' + '(' + b + ')'
result = str(eval(exp)).replace('j','i')
if '+' not in result:
return '0+' + result
return result[1:len(result)-1]
def complex_number_multiply(a, b):
a = a.replace('i', 'j')
b = b.replace('i', 'j')
exp = f"({a})*({b})" # f-string 사용
result = str(eval(exp)).replace('j','i')
if '+' not in result:
return '0+' + result
return result[1:len(result)-1]
-> 문자열로 식을 만들어주는 과정에서 + 연산자를 사용하여 문자열을 이어붙였다. 하지만 이 방식은 가독성이 떨어져 f-string을 사용하여 가독성을 높였다. 다만 if문 내에서는 +연산자를 쓰는게 더 간단해보여 굳이 f-string을 쓰지 않았다.
def complex_number_multiply(a, b):
a1, a2 = map(int, a[:-1].split("+"))
b1, b2 = map(int, b[:-1].split("+"))
return f"{a1*b1-a2*b2}+{a1*b2+a2*b1}i"
split을 이용해 '+'를 기준으로 실수부분과 허수부분을 나누고 각각의 원소들을 곱해주었다. 이렇게 하면 0을 추가해주는 것과 i를 j로 변환하는 처리를 해줄 필요가 없다.