class Vector :
def __init__(self,a): #初始化类的实例
self.a = a
def jia (self,vec_b):
c1 = (self.a[0]+vec_b.a[0]) #计算向量第一个坐标相加
c2 = (self.a[1]+vec_b.a[1]) #计算向量第二个坐标相加
return(c1,c2) #返回计算完的向量
def jian (self,vec_b):
c1 = (self.a[0]-vec_b.a[0]) #计算向量第一个坐标相减
c2 = (self.a[1]-vec_b.a[1]) #计算向量第一个坐标相减
return(c1,c2) #返回计算完的向量
def diancheng (self,vec_b):
c1=(self.a[0]*vec_b.a[0]) #计算向量第一个坐标相乘
c2=(self.a[1]*vec_b.a[1]) #计算向量第一个坐标相乘
return c1+c2 #返回计算完的向量
if __name__ == "__main__":
a=eval(input("请输入向量a:"))
b = eval(input("请输入向量b:"))
v_a = Vector(a)
v_b = Vector(b)
print("加:",v_a.jia(v_b))
print("减:",v_a.jian(v_b))
print("点乘:",v_a.diancheng(v_b))
代码功能分析:定义了一个名为Vector的类,用于表示和操作二维向量。
1. class Vector:定义了一个名为Vector的类。
2. def __init__(self, a):这是Vector类的构造函数,用于初始化类的实例。参数`a`是一个元组或列表,代表向量的两个坐标。
3. self.a = a:将传入的参数a赋值给实例变量self.a,存储向量的坐标。
4. def jia(self, vec_b):定义了一个名为jia的方法,用于计算两个向量的加法。参数vec_b是另一个Vector类的实例。
5. c1 = (self.a[0] + vec_b.a[0]) 和 c2 =(self.a[1] + vec_b.a[1]):分别计算两个向量在第一个和第二个坐标上的和。return (c1, c2):返回一个元组,包含两个向量相加后的结果。
6. def jian(self, vec_b):定义了一个名为jian的方法,用于计算两个向量的减法。
7. c1 = (self.a[0] - vec_b.a[0])和 c2 = (self.a[1] - vec_b.a[1]):分别计算两个向量在第一个和第二个坐标上的差。return (c1, c2): 返回一个元组,包含两个向量相减后的结果。
8. def diancheng(self, vec_b):定义了一个名为diancheng的方法,用于计算两个向量的点乘。
9. c1 = (self.a[0] * vec_b.a[0]) 和 c2 = (self.a[1] * vec_b.a[1]):分别计算两个向量在第一个和第二个坐标上的乘积。return c1 + c2:返回两个坐标乘积之和,即点乘的结果。
10. if __name__ == "__main__":程序的主入口,当该文件被直接运行时,以下代码块将被执行。
11. a = eval(input("请输入向量a:")):提示用户输入向量a的坐标,使用eval函数将输入的字符串转换为Python对象。b = eval(input("请输入向量b:")): 同上,提示用户输入向量b的坐标。
12. v_a = Vector(a)和 v_b = Vector(b):使用用户输入的坐标创建两个Vector类的实例。
13. print("加:", v_a.jia(v_b)):调用v_a实例的jia方法,并将v_b作为参数传递,打印两个向量相加的结果。
14. print("减:", v_a.jian(v_b)): 调用v_a实例的`jian`方法,并将v_b作为参数传递,打印两个向量相减的结果。
15. print("点乘:", v_a.diancheng(v_b)):调用v_a实例的diancheng方法,并将v_b作为参数传递,打印两个向量点乘的结果。
不足及改进:
1. 错误处理:代码没有对输入的格式进行校验。如果输入的不是两个数字的列表或元组,将无法正确创建向量实例。
2. 代码冗余:jia和jian方法中有重复的代码结构,可以抽象成一个更通用的方法来减少重复。
3. 向量维度限制: 当前类只支持二维向量。如果需要支持更多维度,可以修改__init__方法以接受任意长度的列表或元组。