按照以下限制打印范围内的数字。 如果数字是3个打印模糊度的倍数 如果数字是5个打印蜂鸣声的倍数 如果数字是3和5的倍数,则显示fizzbuzz
sample input: sample output
2 1
2
3 15 Fizz
1
2
Fizz
4
Buzz
Fizz
7....
fizzbuzz
我是这个程序设计的新手。我犯了一些错误,请有人提出一些解决方案。谢谢!
for i in range (1,15):
if(i%3 ==0):
print("fizz")
elif(i%5==0):
print("buzz")
elif(i%3 ==0 and i%5==0):
print("fizzbuzz")
else:
print(i)
Actual output which i got
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
答案 0 :(得分:1)
以AND开头。条件将运行,然后在第一个匹配条件下从块退出
if(i%3 ==0 and i%5==0):
print("fizzbuzz")
elif(i%3 ==0):
print("fizz")
elif(i%5==0):
print("buzz")
else:
print(i)
它在处理您的操作是匹配if(i%3 ==0)
而不是匹配到if(i%3 ==0 and i%5==0)
,因为它确实匹配了第一个规则
答案 1 :(得分:0)
您将永远不会到达第三个if
,因为任何与i%3 ==0 and i%5==0
匹配的东西都已经匹配。因此,更改顺序将解决该问题。
答案 2 :(得分:0)
您首先检查简单性,这意味着一旦您检查了15,它将验证它是否可以被3整除,因此只需打印“ Fizz”并继续前进,而无需达到AND i%5 == 0的检查。
答案 3 :(得分:0)
就像其他人提到的那样,问题是您首先必须检查条件:if (i % 3 == 0 and i % 5 == 0)
。然后,您还应该注意,范围函数不包括第二个限制,因此您需要在测试中使用range(1, 16)
。
因此代码应为:
for i in range(1, 16):
if i % 3 == 0 and i % 5 == 0:
print("fizzbuzz")
elif i % 3 == 0:
print("fizz")
elif i % 5 == 0:
print("buzz")
else:
print(i)
打印输出:
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz