任务描述
实现三维向量之间的加法与减法的功能。
####相关知识
在 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 *********#