PTA基础编程题目集 之 Python解法(7-36)

本文介绍了一道基础编程题目,使用Python实现复数的加、减、乘、除运算。通过读取输入的两个复数,计算并输出其运算结果,格式严格遵循题目要求。文章提供了完整的代码实现及样例输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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, '/'))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joker-Tong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值