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

Python 在fizzbuzz中,为什么使用dicts的程序认为0是fizzbuzz?,python,dictionary,fizzbuzz,Python,Dictionary,Fizzbuzz,所以我对编码还很陌生,我在尝试各种不同的fizzbuzz,我遇到了一个使用dicts的 当我运行它时,我可以很容易地通过一次按键更改来更改任何参数,这很好,但我不明白为什么它会先打印fizzbuzz,然后再执行我选择的所有fizzbuzz 以下是我正在使用的代码: def fizzbuzz(multiples, *args): for i in range(*args): output = '' for multiple in multiples:

所以我对编码还很陌生,我在尝试各种不同的fizzbuzz,我遇到了一个使用dicts的

当我运行它时,我可以很容易地通过一次按键更改来更改任何参数,这很好,但我不明白为什么它会先打印fizzbuzz,然后再执行我选择的所有fizzbuzz

以下是我正在使用的代码:

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("")
输出将为: 嘶嘶作响 1. 2. 起泡 ……等等

它使它看起来像0是一个泡沫

出于教育目的:为什么


谢谢。

此代码没有任何问题,除了多个打字错误(但这些都会引发
名称错误
,而不是导致您所询问的行为)并且依赖于dict的未指定顺序(因此您可以得到
BuzzFizz
而不是
FizzBuzz
,但这也不是您所询问的问题)

它打印
FizzBuzz
的原因是:

if i % multiple == 0:
    output += multiples[multiple]
由于
0%3==0
0%5==0
,这两次都是真的,所以它同时添加了两个单词

这不是一个bug。数字0可被3和5整除,除0外,每隔一个整数


你可能会感到困惑,因为许多FizzBuzz程序和可能所有在学校玩这个游戏的孩子都从1开始计数,而不是0。但是
范围(144)
从0开始。(它也以143而不是144结尾。)你可能想调用
fizzbuzz(multiples,1145)

我想我在第4行
中看到了至少一个错误,对于multiples in multiples:
应该是
对于multiples in multiples:
即使在你解决了这个问题之后:你认为
0%3
0%5
给了你什么?如果您不知道,请在交互式终端中尝试。同时,你为什么认为这是错误的?0可以被3和5整除,除0外,每隔一个整数就可以被整除。糟糕的是,我没有复制和粘贴它,而是手工输入的;在我的代码中,它是倍数的。我不知道,我有一部分不认为你可以拆分一个0。。但是我想你可以无限次地拆分一个0。。而这从来就不是什么。那是一些东西。感觉很奇怪。但现在这是有道理的。谢谢你的笑声!