from math import *
def f(a,b,c,d):
alpha = arccos(a/d)
beta = pi - arcsin(a+b/d)
theta= arccos(a/c)
eta= arccos (a+c/b+d)
return (alpha, beta, theta, eta)
我在想,在此期间,有一种可能性,arccos
和arcsin
内的条款将超出范围。所以我应该检查每个函数的项是否在范围内,比如用if
语句,if a/d>1 or a/d<1: alpha=arccos(a/d)
但是如果我想对每一行都这样做,这将使代码看起来很难看,加上我们有很多三角函数。有没有一个函数或方法来处理python中用到的所有余弦和正弦函数?
(注意上面的函数是随机编写的)
首先,请不要使用"随机"写的例子。一个例子是数学中的函数被称为acos
和asin
,而不是arccos
和arcsin
,通过实际运行代码你会发现这一点。
math.acos
在给定参数>时引发ValueError
并传递消息"math domain error"
;1. 您可以像这样捕获所有此类实例。
from math import acos, asin
def f(a,b,c,d):
try:
alpha = acos(a/d)
beta = pi - asin(a+b/d)
theta = acos(a/c)
eta = acos (a+c/b+d)
return alpha, beta, theta, eta
except ValueError:
print("Got an argument outside [-1, 1]")