我已经为它写了一个代码,但无论我怎么尝试,它都不能工作。有人能帮我看看吗
def y(x):
y=(x**3+2*x)/(x**2+2*x)
a=int(input("Enter lower limit:"))
b=int(input("Enter higher limit:"))
n=int(input("Enter no. of points:"))
h=1.0*(b-a)/n
x=[a+i*h for i in range(n)]
y=[y(i) for i in x]
I=1.0*(h/3)*(y[0]+y[-1]+4*sum(y[1:-1:2])+2*sum(y[2:-1:2]))
print (I)它显示错误:
I=1.0*(h/3)*(y[0]+y[-1]+4*sum(y[1:-1:2])+2*sum(y[2:-1:2]))
TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'那是什么意思?
发布于 2020-07-20 15:28:33
你必须在你的函数中使用return:
def y(x):
return (x**3+2*x)/(x**2+2*x)
a=int(input("Enter lower limit:"))
b=int(input("Enter higher limit:"))
n=int(input("Enter no. of points:"))
h=1.0*(b-a)/n
x=[a+i*h for i in range(n)]
y=[y(i) for i in x]
I=1.0*(h/3)*(y[0]+y[-1]+4*sum(y[1:-1:2])+2*sum(y[2:-1:2]))
print(I)发布于 2020-07-20 15:34:13
该错误告诉您表达式中的值为None。这是Python中的一个特殊值,表示没有值。由于表达式如此之大,您可以通过打印表达式的某些部分来查找问题,例如print(h)或print(y)。具体地说,使用添加的print(y)查看代码中的这些行
def y(x):
y=(x**3+2*x)/(x**2+2*x)
y=[y(i) for i in x]
print(y)这将打印如下所示的内容
[None, None, None, None]这是因为y()函数缺少return语句。要解决这个问题,只需添加return
def y(x):
return (x**3+2*x)/(x**2+2*x)提示:将函数命名为y,然后将y赋值给列表。如果您稍后尝试更改此代码,则对两个不同的事物重用单个名称可能会导致问题。我建议将函数重命名为f
def f(x):
return (x**3+2*x)/(x**2+2*x)
y=[f(i) for i in x]https://stackoverflow.com/questions/62990473
复制相似问题