我已经搜索了大约一个小时的答案,似乎大多数人对 fizzbuzz 的编码方式都与我不同。
但是,在尝试了一切方法来找出为什么这个简单的代码不起作用后,我感到非常沮丧。
任何人都可以指出我确定遇到的简单问题吗?代码运行但它只返回值 1。
def fizzbuzz(intList):
for n in intList:
if n % 3 == 0 and n % 5 == 0:
return n.replace(str(n),"Fizzbuzz")
elif n % 3 == 0:
return n.replace(str(n),"Fizz")
elif n % 5 == 0:
return n.replace(str(n),"Buzz")
else:
return n
最佳答案
它查看的第一个值是1
。由于 1%x
对于 1
的 x
仅是 0
,因此它会转到 else
并返回 1
。然后就完成了,因为这就是 return
的作用。
这会导致更大的问题,即您正在启动一个循环,然后保证仅在一次迭代后就会离开该循环,因为每个分支中都有一个 return
。您需要将这些 return
语句替换为 append()
到 list
(不要忘记 return
生成的 list
) 或 print()
调用。
此外,如果您从 3
等内容开始,您的代码将尝试对整数使用 replace
,而这不是您可以对整数执行的操作。你会得到一个回溯。
关于Python Fizzbuzz 循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34101222/