В этом коде нет ничего плохого, за исключением нескольких опечаток (но все они вызывают NameError
вместо того, чтобы вызывать поведение, о котором вы спрашиваете) и полагаясь на неопределенный порядок диктов (чтобы вы могли получить BuzzFizz
вместо FizzBuzz
, но это также не то, о чем вы спрашиваете).
Причина, по которой он печатает FizzBuzz
, заключается в том, что вы делаете это:
if i % multiple == 0:
output += multiples[multiple]
А поскольку 0 % 3 == 0
и 0 % 5 == 0
, это верно оба раза, поэтому добавляет оба слова.
И это не ошибка. Число 0 делится на 3, 5 и любое другое целое число, кроме 0.
Вы можете быть сбиты с толку, потому что многие программы FizzBuzz - и, вероятно, все дети, которые играют в эту игру в школе - начинают считать с 1 вместо 0. Но range(144)
начинается с 0. (Это также заканчивается 143, а не 144.) Возможно, вы хотели позвонить fizzbuzz(multiples, 1, 145)
.