我是编程的新手,我真的很难用Python创建函数。
在尝试计算导数时,我为x值创建了一个np.linspace,然后为y值创建了一个空列表。我使用for循环创建了一个y值列表,这些值是通过函数传递x值的结果。在使用for循环的结果附加空列表之后,尝试创建一个函数以使用有限差分近似来获取导数。当我运行该程序时,我收到语法无效的错误。
我做错了什么?
import numpy as np
from math import *
xvalue = np.linspace(0,100,20)
yvalue = []
for i in xvalue:
q = i**2+4
yvalue.append(q)
def diff(f,x):
n= len(x)
y = []
for i in range(n):
if i == n-1:
y.append((f[i]-f[i-1])/(x[2]-x[1]))
else:
y.append((f[i+1]-f[i]/(x[2]-x[1]))
return y
print xvalue
print yvalue
diff(xvalue,yvalue)
答案 0 :(得分:3)
诊断这些语法错误有点棘手:
File "path/to/my/test.py", line 20
return y
^
SyntaxError: invalid syntax
既然您知道有问题的行最有可能没有问题(return y
没有任何问题),接下来要做的就是查看上一行。和@ ljetibo的回答一样,你错过了一个括号。如果由于某种原因,前一行看起来没问题,请继续在文件中查找,直到找到罪魁祸首。
使用与括号匹配的文本编辑器也非常有用。
修改强>
正如@ljetibo指出的那样,如果您使用IDLE,那么就不会像上面那样回溯。它将改为创建一个带有OK按钮的提示窗口,并突出显示return
语句,让您大致了解从哪里开始查看。
答案 1 :(得分:1)
你在
上错过了一个parens y.append((f[i+1]-f[i]/(x[2]-x[1]))
应该看起来像
y.append((f[i+1]-f[i]/(x[2]-x[1])))