|
20鱼币
函数 main() 接收两个表示从坐标原点出发的二维向量的元组 vector1 和 vector2,
例如 (3,0) 表示从坐标原点 (0, 0) 到坐标 (3, 0) 的向量,
要求返回两个向量 vector1 和 vector2 的夹角(单位为度,数值大小在 0 到 180 之间),
并且要求结果恰好保留 2 位小数,例如向量 (3, 0) 和 (0, 4) 的夹角为 90.00。
删除下面代码中的 pass 语句,替换为自己的代码,完成要求的功能。
代码已导入的标准库对象不是必须使用的,可以自己决定是否使用。
- from operator import mul
- from math import acos, degrees
- def main(vector1, vector2):
- pass
复制代码
嗯,上面的代码不对,还得考虑点在第几象限的问题,我再想一想
- $ cat main.py
- #!/usr/bin/env python
- #coding=utf-8
- from math import sqrt, pow, acos, fabs, degrees
- def angle(A, B):
- c = sqrt(pow(A[0], 2) + pow(A[1], 2))
- n = 90 - degrees(acos(A[1] / c))
- c = sqrt(pow(B[0], 2) + pow(B[1], 2))
- m = 90 - degrees(acos(B[1] / c))
- n = n if A[0] >= 0 else (90 - n) * 2 + n
- m = m if B[0] >= 0 else (90 - m) * 2 + m
- return fabs(n - m)
- print(angle((3, 9), (4, 5)))
- print(angle((3, 0), (0, 4)))
- print(angle((-3, 9), (4, 5)))
- print(angle((3, 0), (0, -4)))
- $ ./main.py
- 20.224859431168056
- 90.0
- 57.094757077012105
- 90.0
- $
复制代码
|
最佳答案
查看完整内容
嗯,上面的代码不对,还得考虑点在第几象限的问题,我再想一想
|