在 python 中迭代整数时出错



我正在尝试计算不同 n 的伯努利多项式。我收到一个错误,我无法迭代整数,我看过不同的帖子,但仍然无法正确处理。我读到我必须将整数更改为字符串才能迭代它们,但它仍然不起作用。你能帮忙吗?

import scipy.special
def cub(x):
return x*x*x
def bernoulli(k,n,x):
a=scipy.special.binom(n, k)
return cub(k/n)*a*x**k*(1-x)**(n-k)
def suma(n,x):
s=0
for str(k) in range (0,n):
s=s+bernoulli(k,n,x)
return s

错误来自最后一段的迭代。当我将 str(k( 更改为 k 时,我得到错误"int"对象不可迭代。

删除for str(k) in range (0,n):

让它for k in range (0,n):

无法在函数中转换迭代器

import scipy.special
def cub(x):
return x*x*x
def bernoulli(k,n,x):
a=scipy.special.binom(n, k)
return cub(k/n)*a*x**k*(1-x)**(n-k)
def suma(n,x):
s=0
for k in range (0,n):
s+=bernoulli(k,n,x)
return s
print(cub(10))
print(bernoulli(1, 2, 3))
print(suma(14, 2))

输出

cub 1000
bernoulli -1.5
suma -16376.826530612321

str(k)替换为 for 循环中的k。这是错误的语法(您使用的是数字,而不是字符串(。

删除str(k),您不能使用返回某些内容的函数作为迭代器。

import scipy.special
def cub(x):
return x*x*x
def bernoulli(k,n,x):
a=scipy.special.binom(n, k)
return cub(k/n)*a*x**k*(1-x)**(n-k)
def suma(n,x):
s=0
for k in range (0,n):
s=s+bernoulli(k,n,x)
return s

对循环变量使用函数是一种SyntaxError,因为你不能为函数调用赋值。

最新更新