首页 > 解决方案 > 在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' object is not iterable。

标签: pythonloops

解决方案


消除 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

推荐阅读