PTA(每日一题)7-30 新型计算器

题目:设计一个计算器,实现一个三维向量的加法,减法以及向量和标量的乘法和除法运算
提示:
1、定义类名为 VecCal,设计构造函数创建三维向量对象: def init(self, x=0,y=0,z=0) 用x,y,z指代三个维度的值
2、重写加法(+),减法(-),乘法(
)和整除除法(//)运算,实现向量的加减乘除
3、除法运算作异常处理,当输入标量数字是0时,除法结果为 (0,0,0)
*

加法示例:

def add(self, n): # 加法
result = VecCal() # 定义结果变量,也是一个三维向量,通过构造函数创建
result.X = self.X + n.X
result.Y = self.Y + n.Y
result.Z = self.Z + n.Z
return result # 返回 执行加法运算后的向量结果
输入格式:
第一行输入一个三维向量,逗号分隔,如:1,2,3

第二行输入另一个三维向量,逗号分隔:如:4,5,6

第三行输入一个数字, 如:3

输出格式:
(1, 2, 3) + (4, 5, 6) = (5, 7, 9)

(1, 2, 3) - (4, 5, 6) = (-3, -3, -3)

(1, 2, 3) * 3 = (3, 6, 9)

(1, 2, 3) / 3 = (0, 0, 1)

输入样例:
在这里给出一组输入。例如:

1,2,3
4,5,6
3

输出样例:
在这里给出相应的输出。例如:

(1, 2, 3) + (4, 5, 6) = (5, 7, 9)
(1, 2, 3) - (4, 5, 6) = (-3, -3, -3)
(1, 2, 3) * 3 = (3, 6, 9)
(1, 2, 3) / 3 = (0, 0, 1)

代码:

class VecCal(object):
    def __init__(self, x=0, y=0, z=0):
        self.X = x
        self.Y = y
        self.Z = z

    def __add__(self, n):
        result = VecCal()
        result.X = self.X + n.X
        result.Y = self.Y + n.Y
        result.Z = self.Z + n.Z
        return result

    def __sub__(self, n):
        result = VecCal()
        result.X = self.X - n.X
        result.Y = self.Y - n.Y
        result.Z = self.Z - n.Z
        return result

    def __mul__(self, n):
        result = VecCal()
        result.X = self.X * n
        result.Y = self.Y * n
        result.Z = self.Z * n
        return result

    def __truediv__(self, n):
        result = VecCal()
        result.X = self.X // n
        result.Y = self.Y // n
        result.Z = self.Z // n
        return result

    def show(self):
        my_tuple = (self.X, self.Y, self.Z)
        return my_tuple


a, b, c = list(map(int, input().split(',')))
x, y, z = list(map(int, input().split(',')))
n = int(input())
v1 = VecCal(a, b, c)
v2 = VecCal(x, y, z)
print(f'{v1.show()} + {v2.show()} = {(v1 + v2).show()}')
print(f'{v1.show()} - {v2.show()} = {(v1 - v2).show()}')
print(f'{v1.show()} * {n} = {(v1 * n).show()}')
if n != 0:
    print(f'{v1.show()} / {n} = {(v1 / n).show()}')  # 其实n为0,可以输出为(0,0,0)
else:
    print(f'{v1.show()} / {n} = {(0, 0, 0)}')

在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱写bug的小邓程序员

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

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

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

打赏作者

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

抵扣说明:

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

余额充值