Python实现二维向量运算

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__方法以接受任意长度的列表或元组。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值