在一个fizzbuzz,为什么使用dicts的程序认为0是一个fizzbuzz?

时间:2018-05-11 06:55:21

标签: python dictionary fizzbuzz

所以我对编码很陌生,我正在尝试所有不同的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("")

输出将会: FizzBu​​zz 1 2 嘶 ...等

它看起来像0是FizzBu​​zz ......

出于教育目的:为什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

这个代码没有任何问题,除了多个拼写错误(但是那些都会引发NameError而不是引起你所询问的行为)并且依赖于dict的未指定顺序(所以你可以得到{ {1}}而不是BuzzFizz,但这也不是你要问的问题。)

它打印FizzBuzz的原因是你这样做:

FizzBuzz

if i % multiple == 0: output += multiples[multiple] 0 % 3 == 0开始,两次都是正确的,因此它会添加两个单词。

这不是一个错误。数字0可以被3和5整除,除了0之外的每个其他整数。

你可能会感到困惑,因为许多FizzBu​​zz程序 - 可能是所有在学校玩游戏的孩子 - 从1开始计数而不是0.但是0 % 5 == 0从0开始。(它也以143结束,而不是144 。)您可能想要致电range(144)