实现三维向量之间的加法与减法

任务描述
实现三维向量之间的加法与减法的功能。
####相关知识
在 Python 面向对象编程中,类的特殊方法在形式上是前后各有 2 个下划线,作用是实现与某个运算符或内置函数的对应关系。例如,如果某个类实现了__len__()这个特殊方法,那么这个类的对象就支持内置函数len();如果某个类实现了__add__()这个特殊方法,那么这个类的对象就支持加法运算符;如果某个类实现了__sub__()这个特殊方法,那么这个类的对象就支持减法运算符;如果某个类实现了__str__()这个特殊方法,那么这个类的对象就支持print()函数。

编程要求
本关的编程任务是,补全step3/step3.py文件中 Begin-End 区间的代码,要求实现三维向量间加法与减法的功能。具体要求如下:

在第二关的基础上,为类 Vector3d 增加 3 个特殊方法,分别用来支持加法运算符、减法运算符,实现两个三维向量之间的加法和减法运算(例如向量(3,4,5)与向量(4,5,6)的和为向量(7,9,11),差为向量(-1,-1,-1)),以及支持内置函数print(),查看向量的值(例如输出各分量分别为3、4、5 的三维向量,会得到(3,4,5));

具体输入输出请参见后续测试样例。

本关涉及的代码文件step3.py的代码框架如下:

class Vector3d:
    def __init__(self, x, y, z):
        self.__x = x
        self.__y = y
        self.__z = z
    def length(self):
        return (self.__x**2 + self.__y**2 + self.__z**2) ** 0.5
    # 请在这里增加3个特殊方法,分别用来支持加法运算符、减法运算符以实现两个三维向量间的加法和减法运算,以及打印函数print()
        #********** Begin *********#
    def __str__(self):
    def __add__(self, v):
    def __sub__(self, v):
        #********** End *********#

测试说明
本关的测试文件是step3/testStep3.py,负责对你写的实现代码进行测试。该测试文件代码如下:

from step3 import Vector3d
x1, y1, z1 = map(int, input().split(','))
x2, y2, z2 = map(int, input().split(','))
v1 = Vector3d(x1, y1, z1)
v2 = Vector3d(x2, y2, z2)
print(v1+v2)
print(v1-v2)

注意:测试程序testStep3.py中的代码不能被修改。

以下是平台的测试样例集。

测试输入:
3,4,5
4,5,6
预期输出:
(7, 9, 11)
(-1, -1, -1)

开始你的任务吧,祝你成功!

我的代码:

class Vector3d:
    def __init__(self, x, y, z):
        self.__x = x
        self.__y = y
        self.__z = z

    def length(self):
        return (self.__x**2 + self.__y**2 + self.__z**2) ** 0.5

    # 请在这里增加3个特殊方法,分别用来支持加法运算符、减法运算符以实现两个三维向量间的加法和减法运算,以及打印函数print()
        #********** Begin *********#
    def __str__(self):
        return str((self.__x,self.__y,self.__z))
    def __add__(self, v):
        x =self.__x + v.__x 
        y =self.__y + v.__y
        z =self.__z + v.__z
        return Vector3d(x,y,z)
    def __sub__(self, v):
        x =self.__x - v.__x 
        y =self.__y - v.__y
        z =self.__z - v.__z
        return Vector3d(x,y,z)
        #********** End *********#
    原文作者:别是个逗比吧
    原文地址: https://blog.csdn.net/qq_41579955/article/details/106603794
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞