python中FizzBuzz测试的正确输出是什么?

2024-04-24 01:19:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始使用python并尝试了FizzBuzz测试。我想到了这个:

count = 0
while count <= 100:
    if (count % 3) == 0:
        print "Fizz"
        count = count + 1

    elif (count % 5) == 0:
        print "Buzz"
        count = count + 1

    elif (count % 5) and (count % 3):
        print "FizzBuzz"
        count = count + 1

    else:
        print count
        count = count + 1

无输出编号:

^{pr2}$

这不是正确的输出。我怎样才能清理程序?在


Tags: and程序ifcountelse编号printfizzbuzz
1条回答
网友
1楼 · 发布于 2024-04-24 01:19:52

想想这些陈述发生的顺序

elif (count % 5) and (count % 3):

这行代码永远不会执行,因为

^{pr2}$

或者

elif (count % 5) == 0:

如果这些条件为真,将首先执行。在这个 如果您想检查这些条件是否都是真的, 只有这样,您才应该检查一个单个条件是否为真。在

还有,代码行

count = count + 1

出现在代码的每个分支中,请考虑将其放在某个地方 每次都会被执行。在

但是我会选择使用for循环而不是while循环

for x in range(100):

这样就不需要额外的count变量。在

还有一件事要注意

elif (count % 5) and (count % 3):

在这里,您不检查数字%5是否==0,而只是检查(计数%5)。所以表达式“if(count%5)”将导致真if count被5整除(检查真值测试)。其他地方也一样,省略了==比较器

这里有一个与您的方法类似的例子。在

for count in range(1, 101):
    if count % 5 == 0 and count % 3 == 0:
        print "FizzBuzz"
    elif count % 5 == 0:
        print "Buzz"
    elif count % 3 == 0 and count % 5 == 0:
        print "Fizz"
    else:
        print count

注意事项:

  • 在检查个别情况之前先检查两种情况
  • for循环而不是while循环(个人偏好)
  • 正在检查==0

相关问题 更多 >