Python,TypeError:'int'对象不可迭代

时间:2016-11-09 05:25:58

标签: python

FizzBu​​zz问题略有不同,只需添加一个级别。

我已经在SO上阅读了这个错误消息的许多答案,但没有一个能帮助我理解我所缺少的内容。

因此,虽然我非常感谢答案,但我想要的是理解错误背后的原因。

这个任务不能使用简单的循环/ if / elif结构来完成,而不需要调用函数吗?

TypeError:'int'对象不可迭代

def solution(N):
N = 0
for i in N:    
    if i % 3 == 0 and i % 5 == 0 and i % 7 == 0:
        print('FizzBuzzWoof')
    elif i % 3 == 0 and i % 5 == 0:
        print('FizzBuzz')
    elif i % 3 == 0:
        print('Fizz')
    else: 
        print(i)

    N = N+1

def main():
    solution(35)
main()

3 个答案:

答案 0 :(得分:2)

试试这个:

def solution(ints):
 for i in range(1, ints+1):    
     if i % 3 == 0 and i % 5 == 0 and i % 7 == 0:
         print('FizzBuzzWoof')
     elif i % 3 == 0 and i % 5 == 0:
         print('FizzBuzz')
     elif i % 3 == 0 and i % 5 == 0:
         print('Fizz')
     else: 
        print(i)

def main():
    solution(35)
main()
如果您想从0开始并包含35

,请

range(0, ints+1)

答案 1 :(得分:1)

您正在尝试迭代单个数字。相反,您可以创建一个ints数组并迭代它。例如:

ints = [1, 2, 3]
x.append([4, 5]) #append elements you need
print (x)
#result will be 1,2,3,4,5

现在继续这个并重复1到5:

for i in ints: 
  #your logic goes in here

答案 2 :(得分:0)

在您的代码中ints是一个整数,35是提供的示例。整数不是集合,因此您不能将其用作for-loop的范围。正如@AndrewLi在他的评论中建议的那样,使用range(n)来获取包含元素0n-1的迭代器。

在你的代码中,你还将ints覆盖为solution函数中的第一个东西,实际上忽略了解析给函数的参数。在下面的代码中,我添加了range(arg),并将参数重命名为arg而不是ints

def solution(arg):
  ints = 0
  for i in range(arg):
    if i % 3 == 0 and i % 5 == 0 and i % 7 == 0:
      print('FizzBuzzWoof')
    elif i % 3 == 0 and i % 5 == 0:
      print('FizzBuzz')
    elif i % 3 == 0 and i % 5 == 0:
      print('Fizz')
    else:
      print(i)

    ints = ints+1

def main():
  solution(35)

main()