두 개의 input에는 복소수가 string
으로 주어 진다. 복소수란 의 형태로, 실수와 허수로 이루어진 수다.
input으로 받은 두 수를 곱해 string
타입 으로 반환하라.
def complex_number_multiply(a, b):
# step1
string_complex_nums = [a, b]
complex_nums = [0, 0]
re = []
im = []
result = ''
# step2
for num in string_complex_nums:
try:
re.append(int(num.split('+')[0]))
im.append(int(num.split('+')[1].rstrip('i')))
except:
print('입력 형식이 잘못 되었습니다')
return '"실수부+허수부i" 형식으로 입력해 주세요'
# step3
complex_nums[0] = re[0]*re[1]-im[0]*im[1]
complex_nums[1] = re[0]*im[1]+re[1]*im[0]
result = str(complex_nums[0]) +'+' + str(complex_nums[1])+'i'
return result
input
을 실수부와 허수부로 분리한후, int
데이터 타입으로 바꾸어 곱하기 연산을 한다. 그 연산 결과를 문자열로 바꾸어 반환한다.
input
을 int
가 아닌 complex number
로 바꾸고 연산해서 그 결과를 문자열로 바꾸어 반환해도 된다.
그러면 지금 풀이 보다, input 형식에 맞지 않는 입력에 대한 처리가 더 번거롭게 느껴졌다
def complex_number_multiply(a, b):
# step1
string_complex_nums = [a, b]
complex_nums = [0, 0]
re = []
im = []
result = ''
a,b
를 for
문으로 순회하기 위한,
string_complex_nums
실수부를 re
담을, 허수부를 담을 im
결과를 담을 result
선언
def complex_number_multiply(a, b):
# step 1
#... ...#
# step 2
for num in string_complex_nums:
try:
re.append(int(num.split('+')[0]))
im.append(int(num.split('+')[1].rstrip('i')))
except:
print('입력 형식이 잘못 되었습니다')
return '"(실수부) + (허수부)i" 형식으로 입력해 주세요 ex) 2+-2i'
string_complex_nums
를 돌면서,
input
형식(x+yi x,y는 모든 실수
)에 맞는, 입력이 들어 오면, 실수부를 re
리스트에, 허수부를 im
리스트에 int
형으로 형변환 후 추가한다.
형식에 맞지 않으면, 안내문을 반환 한다.
def complex_number_multiply(a, b):
# step1
#... ...#
# step2
#... ...#
# step3
complex_nums[0] = re[0]*re[1]-im[0]*im[1]
complex_nums[1] = re[0]*im[1]+re[1]*im[0]
result = str(complex_nums[0]) +'+' + str(complex_nums[1])+'i'
return result
복소수 연산에 맞게 연산한후
연산 결과를 문제 형식에 맞게 맞춘 문자열로 만들어
result
에 대입하고, result
를 반환한다.
🏹 복소수 연산