编写一个名为‘vectormath.py’的程序,在3个维度上进行基本的向量计算:加法、点积和归一化。
我的映射函数有一个错误。
示例输入:
Enter vector A:
1 3 2
Enter vector B:
2 3 0样本输出
A+B = [3, 6, 2]
A.B = 11
|A| = 3.74
|B| = 3.61代码:
import math
def addition(a,b):
return[a[0]+b[0] , a[1] + b[1] , a[2] + b[2]]
def Dotproduct(a , b):
return a[0]*b[0] + a[1]*b[1] + a[2]*b[2]
def norm(a):
square = a[0]**2 + a[1]**2 + a[2]**2
return math.sqrt(square)
def main():
vector_A = input("Enter vector A:\n").split(" ")
vector_A = map(int,vector_A)
vector_B = input("Enter vector B:\n").split(" ")
vector_B = map(int, vector_B)
print(addition(vector_A,vector_B))
print(addition(vector_A,vector_B))
print(norm(vector_A))
print(norm(vector_B))
if __name__ == "__main__":
main()发布于 2021-05-29 12:51:57
替换
使用vector_A = list(map(int, vector_A))的vector_A = map(int,vector_A)
和
使用vector_B = list(map(int, vector_B))的vector_B = map(int,vector_B)
在这里,map(int, vector_A)返回一个地图对象,它是一个迭代器。
list()获取迭代器并返回代码中需要的列表,以便进行进一步的向量计算。
到目前为止,您正在向函数addition, Dotproduct and norm传递map object,它实际上应该是定义的计算的列表。
上面的更改将贴图对象转换为列表。
https://stackoverflow.com/questions/67746974
复制相似问题