有关python类的练习题
定义一个n维向量类:
(1)创建一个初始化向量的成员函数
(2)重载格式化输出函数
(3)将矢量的模装饰成属性函数
(4)重载矢量加法运算
(5)重载矢量减法运算
(6)求两矢量的点积
(7)给出测试主程序
具体代码如下
class Vector:
# 创建成员函数
def __init__(self, v):
self.v = v
# 重载格式化输出函数
def __format__(self, format_spec):
return "vector={x}".format(x=self.v)
# 将矢量的模装饰成属性函数
@property
def normcal(self):
temp = 0
for i in self.v:
temp += i * i
print("%s" % temp**0.5)
# 重载矢量加法运算
def __add__(self, other):
if len(self.v) != len(other.v):
return "cant calculate"
result = []
for i in range(len(self.v)):
result.append(self.v[i]+other.v[i])
return result
# 重载矢量减法运算
def __sub__(self, other):
if len(self.v) != len(other.v):
return "cant calculate"
result = []
for i in range(len(self.v)):
result.append(self.v[i]-other.v[i])
return result
# 求两矢量点积
def dot_product(self, other):
if len(self.v) != len(other.v):
return "cant calculate"
result = []
for i in range(len(self.v)):
result.append(self.v[i]*other.v[i])
return result
"""
以下是测试主程序
"""
# 初始化两个n维向量
class1 = Vector([1, 3])
class2 = Vector([2, 4])
# 格式化输出函数调用
print("{}".format(class1))
# 属性函数调用
class1.normcal
# 两向量加法
print(class1+class2)
# 两向量减法
print(class1-class2)
# 两向量点积
print(class1.dot_product(class2))