PTA基础编程题目集 之 Python解法(7-36)
7-36 复数四则运算 (15分)
本题要求编写程序,计算2个复数的和、差、积、商。
输入格式:
输入在一行中按照a1 b1 a2 b2的格式给出2个复数C1=a1+b1i和C2=a2+b2i的实部和虚部。题目保证C2不为0。
输出格式:
分别在4行中按照(a1+b1i) 运算符 (a2+b2i) = 结果的格式顺序输出2个复数的和、差、积、商,数字精确到小数点后1位。如果结果的实部或者虚部为0,则不输出。如果结果为0,则输出0.0。
输入样例1:
2 3.08 -2.04 5.06
输出样例1:
(2.0+3.1i) + (-2.0+5.1i) = 8.1i
(2.0+3.1i) - (-2.0+5.1i) = 4.0-2.0i
(2.0+3.1i) * (-2.0+5.1i) = -19.7+3.8i
(2.0+3.1i) / (-2.0+5.1i) = 0.4-0.6i
输入样例2:
1 1 -1 -1.01
输出样例2:
(1.0+1.0i) + (-1.0-1.0i) = 0.0
(1.0+1.0i) - (-1.0-1.0i) = 2.0+2.0i
(1.0+1.0i) * (-1.0-1.0i) = -2.0i
(1.0+1.0i) / (-1.0-1.0i) = -1.0
一开始找了半天不知道sample2哪里错了,后来删了#号的部分就对了,迷醉
本题的计算不算繁琐,主要是输出的格式比较复杂,python中自带了complex类,所以可以直接计算,这是比用C语言写方便的地方,然后本体就是要注意一些保留小数的格式等问题.
a1, b1, a2, b2 = map(float, input().split())
a = complex(a1, b1)
b = complex(a2, b2)
x1 = round(a.real, 1)
x2 = round(a.imag, 1)
y1 = round(b.real, 1)
y2 = round(b.imag, 1)
if x2 >= 0:
x2 = '+' + '' + str(x2)
# else:
# x2 = '-'+''+str(x2)
if y2 >= 0:
y2 = '+' + '' + str(y2)
# else:
# y2 = '-' + '' + str(y2)
def cal(a, b, ope):
if ope == '+':
c = a + b
return c
if ope == '-':
c = a - b
return c
if ope == '*':
c = a * b
return c
if ope == '/':
c = a / b
return c
def func(c):
c1 = round(c.real, 1)
c2 = round(c.imag, 1)
if c1 == 0 and c2 == 0:
print('0.0')
elif c1 == 0:
print(f'{c2}i')
elif c2 == 0:
print(c1)
else:
if c2 > 0:
print(f'{c1}+{c2}i')
else:
print(f'{c1}{c2}i')
print(f'({x1}{x2}i) + ({y1}{y2}i) = ', end='')
func(cal(a, b, '+'))
print(f'({x1}{x2}i) - ({y1}{y2}i) = ', end='')
func(cal(a, b, '-'))
print(f'({x1}{x2}i) * ({y1}{y2}i) = ', end='')
func(cal(a, b, '*'))
print(f'({x1}{x2}i) / ({y1}{y2}i) = ', end='')
func(cal(a, b, '/'))