为什么我的 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
这是我学到的一课:
变量作用于您放置它的位置。
快乐的编码人员,感谢您的出色帮助和想法。
我正在创建 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
这是我学到的一课: 变量作用于您放置它的位置。
快乐的编码人员,感谢您的出色帮助和想法。