首页 > 解决方案 > 正弦函数之和 - 类型错误浮点对象不可迭代

问题描述

我正在尝试开发一个计算正弦之和的函数。

我尝试的第一个功能是:

def S(t,n,T):
    return (4/pi)*sum((1/(2*i-1))*sin(2*(2*i-1)*pi*t/T) for i in range(1,n+1))

然后我得到了我0.2381何时使用以下参数调用函数的答案:

S(0.01*2*pi,3,2*pi)

由于我对 Python 比较陌生,因此我尝试将此代码修改为:

def S1(t1,n1,T1):
    
    s1 = 0
    
    for i in range(1,n1+1):
        s1 = s1 + (4/pi)*sum((1/(2*i-1))*sin(2*(2*i-1)*pi*t1/T1))
    return s1

但是当我使用相同的参数调用函数 S1 时,我收到一条错误消息:

TypeError: 'float' object is not iterable. 

有人可以解释这是为什么吗?我查看了与此相关的其他一些答案,TypeError但我不明白。

标签: pythontypeerroriterable

解决方案


该函数sum()需要一个可迭代的作为参数,但在S1你传递给它一个浮点数。

这是解决方案:

def S1(t1, n1, T1):
    results = []
    for i in range(1, n1 + 1):
        results.append((1 / (2 * i - 1)) * sin(2 * (2 * i - 1) * pi * t1 / T1))
    return (4 / pi) * sum(results)

推荐阅读