【发布时间】:2019-08-05 15:38:40
【问题描述】:
我挑战自己编写一个返回给定角度正弦的函数。 但我根本不想导入任何模块,我只想用普通的 Python 3 来做。
我尝试了许多不同的解决方案,并测试了我的函数以确定数字的阶乘。此功能完美运行,因此问题必须出在其他地方。
def fakult(n):
if n < 0:
raise ValueError
if n == 0:
return 1
else:
fak = 1
for i in range(2,n+1):
fak *= i
print(fak)
return fak
def sin(x, attempts=10):
a=0
for n in range(attempts):
#"fakult" calls a function which return the factorial of the term in the parantheses
a+=((-1) ** n) * ((x ** ((2 * n) + 1)) / (fakult(2 * n + 1)))
return a
我的其余代码没有错误,也没有任何错误消息。结果是完全错误的。我做了一些基本的调试,并在两行之间放置了一些打印命令.. 90 度的正弦应该是 0,89.... 函数返回-1.0651331796981347e+20
【问题讨论】:
-
你的意思是正弦吗?不是鼻窦炎?你说的教师是什么意思?
-
要么初始化
a = 0,要么从1for n in range(1, attempts)开始范围。您将a初始化为x,然后在n = 0的第一次迭代中再次添加x。这仍然不能解释天文数字,但这是一个开始 -
我们需要查看
fakult的实现,因为问题可能就在那里......(这不是可重现的代码......)。另外,尝试做一些基本的调试,例如在每次迭代结束时添加一个打印,看看结果是否符合你的预期 -
jep 我的意思是正弦...而教师的意思是 XY! (例如 5!= 1*2*3*4*5)
-
您是以度还是弧度工作的?泰勒级数不是仅对范围有用吗 -pi
标签: python-3.x