根据给定的约束以任何语言打印

时间:2019-05-01 08:42:52

标签: python python-3.7

按照以下限制打印范围内的数字。 如果数字是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

4 个答案:

答案 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