程序填空题:三维向量的运算 - 实验15 面向对象 - 《Python编程基础及应用实验教程》 - 高教社
对于一个三维向量(x,y,z),其加法运算定义为:
![image.png](~/98b2306d-b9d6-4519-8c1a-699e50d84ddc.png)
减法运算定义为:
![image.png](~/dd868f25-c8e8-4dc4-af88-39e9899ef8fa.png)
模长定义为:
![image.png](~/4620e466-0519-41d1-b61d-c3deb883752d.png)
请根据上述定义,完善下述三维向量类Vector3D的设计,使得程序可以完成三维向量的对象打印、加减法以及求模长的操作。程序的输出应与期望一致,且要求每个空白处填写的代码不超过一行。
python
class Vector3D:
def __init__(self,x,y,z):
self.x,
def __str__(self):
return
def __add__(self,v):
return Vector3D(self.x+v.x,)
def __sub__(self,v):
def length(self):
return
v1 = Vector3D(1,2,3)
v2 = Vector3D(4,5,6)
v3 = v1 + v2
v4 = v2 - v1
print("v1 =",v1)
print("Length of v1 = %.4f" % v1.length())
print(f"{v1}+{v2}={v3}")
print(f"{v2}-{v1}={v4}")
期望的执行结果:<br>
v1 = (1, 2, 3)
Length of v1 = 3.7417
(1, 2, 3)+(4, 5, 6)=(5, 7, 9)
(4, 5, 6)-(1, 2, 3)=(3, 3, 3)
<br>**拼尽全力还是不会?参考B站习题讲解**<br>
哔哩哔哩up主:[海洋饼干叔叔](https://space.bilibili.com/384177380) [Python课程](https://www.bilibili.com/video/BV1kt411R7uW/)
[Python习题](https://www.bilibili.com/video/BV1iL411t7UZ/)
[简洁的C和C++](https://www.bilibili.com/video/BV1it411d7zx/)
作者每天分享一篇关于C/C++/Python的技术文章,学习编程不迷路。
![image.png](~/7c4cfd2d-8e3e-40cd-826d-299d4200e600.png)
答案:
第1空:self.y,self.z = x,y,z
第2空:str((self.x,self.y,self.z))
第3空:self.y+v.y,self.z+v.z
第4空:return Vector3D(self.x-v.x,self.y-v.y,self.z-v.z)
第5空:(self.x**2+self.y**2+self.z**2)**0.5
![image.png](~/98b2306d-b9d6-4519-8c1a-699e50d84ddc.png)
减法运算定义为:
![image.png](~/dd868f25-c8e8-4dc4-af88-39e9899ef8fa.png)
模长定义为:
![image.png](~/4620e466-0519-41d1-b61d-c3deb883752d.png)
请根据上述定义,完善下述三维向量类Vector3D的设计,使得程序可以完成三维向量的对象打印、加减法以及求模长的操作。程序的输出应与期望一致,且要求每个空白处填写的代码不超过一行。
python
class Vector3D:
def __init__(self,x,y,z):
self.x,
def __str__(self):
return
def __add__(self,v):
return Vector3D(self.x+v.x,)
def __sub__(self,v):
def length(self):
return
v1 = Vector3D(1,2,3)
v2 = Vector3D(4,5,6)
v3 = v1 + v2
v4 = v2 - v1
print("v1 =",v1)
print("Length of v1 = %.4f" % v1.length())
print(f"{v1}+{v2}={v3}")
print(f"{v2}-{v1}={v4}")
期望的执行结果:<br>
v1 = (1, 2, 3)
Length of v1 = 3.7417
(1, 2, 3)+(4, 5, 6)=(5, 7, 9)
(4, 5, 6)-(1, 2, 3)=(3, 3, 3)
<br>**拼尽全力还是不会?参考B站习题讲解**<br>
哔哩哔哩up主:[海洋饼干叔叔](https://space.bilibili.com/384177380) [Python课程](https://www.bilibili.com/video/BV1kt411R7uW/)
[Python习题](https://www.bilibili.com/video/BV1iL411t7UZ/)
[简洁的C和C++](https://www.bilibili.com/video/BV1it411d7zx/)
作者每天分享一篇关于C/C++/Python的技术文章,学习编程不迷路。
![image.png](~/7c4cfd2d-8e3e-40cd-826d-299d4200e600.png)
答案:
第1空:self.y,self.z = x,y,z
第2空:str((self.x,self.y,self.z))
第3空:self.y+v.y,self.z+v.z
第4空:return Vector3D(self.x-v.x,self.y-v.y,self.z-v.z)
第5空:(self.x**2+self.y**2+self.z**2)**0.5