FizzBuzz问题略有不同,只需添加一个级别。
我已经在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()
答案 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)
来获取包含元素0
到n-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()