为什么我的 Fizzbuzz 输出不正确?

Why does my Fizzbuzz is not outputting correctly?

我正在创建 Fizzbuzz 代码,但代码存在问题,结果如下所示:

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

这是我的代码:


word = [3,5]
ans = ["Fizz","Buzz"]

i = 1
j = 0
result = ""

while i <= 20:
    while j <= len(word)-1:
        if i % int(word[j]) == 0 : result += ans[j]
        if result == "" : result = str(i)
        j+=1
    print(result)
    i+=1

代码检查数字列表并输出结果,否则它将输出数字本身。

功能逻辑很奇怪:

first - 你不需要检查word-1的长度(每次都是1),

second - 理解j为2后,你会发现无法检查if

if i % int(word[j]) == 0

因为位置2的word中没有任何内容,

third - 在这里使用 while 循环代替 for 循环并不常见

您有更多错误,但不要列出它们,而是尝试以不同的方式再做一次。

答案:

而不是使用 2 个变量和数组以及您分配的所有内容(如果您仍然喜欢使用 while 循环)

i = 1
result = ""

while i <= 20:
   if i%5 == 0 and i%3 == 0 : result="FizzBuzz"
   elif i%5 == 0: result="Fizz"
   elif i%3 == 0: result="Buzz"
   else : result = i
   print(result)
   i+=1

如果你想用for循环

for fizzbuzz in range(1,21):
    if fizzbuzz % 3 == 0 and fizzbuzz % 5 == 0:
        print("fizzbuzz")
        continue
    elif fizzbuzz % 3 == 0:
        print("fizz")
        continue
    elif fizzbuzz % 5 == 0:
        print("buzz")
        continue
    print(fizzbuzz)

没关系,原来我自己找到了答案:

word = [3,5]
ans = ["Fizz","Buzz"]

i = 1 
while i <= 100:
    result = ""
    j = 0
    while j < len(word):
        if i % int(word[j]) == 0 : result += ans[j]
        j+=1
    if result == "" : result = str(i)
    print(result)
    i+=1

我发现了 3 个错误 结果是 j 变量一直在计数,所以它无法重置,所以我所要做的就是将变量 j 放在第一个 while 循环中。

while i <= 100:
    j = 0

第二个问题与 j 变量类似,所以我也将其放在第一个 while 循环中:

while i <= 100:
    result = ""
    j = 0

第三个错误在这段代码中:

if result == "" : result = str(i)

所以我所要做的就是在 2 循环之外声明它,结果就在这里:

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz

这是我学到的一课: 变量作用于您放置它的位置。

快乐的编码人员,感谢您的出色帮助和想法。