所以我对编码很陌生,我正在尝试所有不同的fizzbuzzs'我遇到了一个使用dicts的人。
当我运行它时,我可以轻松地通过1次击键改变来改变任何参数,这很好,但我不能弄清楚为什么它首先打印fizzbuzz,然后它会完成所有的fizzbuzzs'我选择了。
以下是我使用的代码:
def fizzbuzz(multiples, *args):
for i in range(*args):
output = ''
for multiple in multiples:
if i % multiple == 0:
output += multiples[multiple]
if output == '':
output = i
print(output)
multiples={3:Fizz,5:Buzz}
fizzbuzz(multiples, 145)
stall = input("")
输出将会: FizzBuzz 1 2 嘶 ...等
它看起来像0是FizzBuzz ......
出于教育目的:为什么?
谢谢。
答案 0 :(得分:1)
这个代码没有任何问题,除了多个拼写错误(但是那些都会引发NameError
而不是引起你所询问的行为)并且依赖于dict的未指定顺序(所以你可以得到{ {1}}而不是BuzzFizz
,但这也不是你要问的问题。)
它打印FizzBuzz
的原因是你这样做:
FizzBuzz
从if i % multiple == 0:
output += multiples[multiple]
和0 % 3 == 0
开始,两次都是正确的,因此它会添加两个单词。
这不是一个错误。数字0可以被3和5整除,除了0之外的每个其他整数。
你可能会感到困惑,因为许多FizzBuzz程序 - 可能是所有在学校玩游戏的孩子 - 从1开始计数而不是0.但是0 % 5 == 0
从0开始。(它也以143结束,而不是144 。)您可能想要致电range(144)
。