0

如果我将变量 numCount 设置为 100,程序将无法准确,但使用 25 这样的数字,它可以正常工作。这是怎么回事?

print "Fizzbuzz"
numCount = 0

while numCount < 100:
    numCount = numCount + 1

    if (numCount % 3) == 0:
        if (numCount % 15) == 0:
            print "Fizzbuzz"
        else:
                print "Fizz"
    if (numCount % 5) == 0:
        if (numCount%15) == 0:
            print "Fizzbuzz"
        else:
                print "Buzz"
    else:
        print numCount
4

3 回答 3

4

while numCount < 100:表示while numCount小于100。如果numCount == 100或更大的数字,while 循环将不会运行。

你的意思是<=<=是“小于或等于”的运算符。

于 2013-07-06T02:43:23.747 回答
0

查看while循环:

while numCount < 100

您可能已经知道它的意思是“当 numCount 小于 100 时”。这就是麻烦。看,如果 numCount 是 25,Python 第一次是这样解释的:

while 25 < 100

现在,假设 numCount 是 100。Python 会这样解释该语句:

while 100 < 100

看到问题了吗?你基本上是在说“100 小于 100”。但是100永远不会少于100!因此,循环永远不会运行。您可以使用 <= 而不是 <。这意味着“也小于或等于”。所以,如果numCount的内容小于等于100,那么循环就会运行。这可能是你想要的。

于 2013-07-06T03:53:58.013 回答
0

这个问题非常古老,但我想在这里添加一个答案,基于我上周看到的一些很酷的东西上周查找了一个不相关的主题。

FizzBu​​zz:对于不超过 100 的整数,如果整数可以被 3 和 5 (15) 整除,则打印 FizzBu​​zz;如果它可以被 3(而不是 5)整除,则发出嘶嘶声;嗡嗡声,如果它可以被 5(而不是 3)整除;否则为整数。

看哪!

def FizzBuzz():
    for i in range(1,101):
        print {
            3 : "Fizz",
            5 : "Buzz",
            15 : "FizzBuzz"}.get(15*(not i%15) or
                                 5*(not i%5 ) or
                                 3*(not i%3 ), '{}'.format(i))

.get()方法在这里创造了奇迹。

操作如下

对于从 1 到 100 的所有整数(不包括 101),
根据这些规则打印我们通过 get 调用的字典键的值。

“获取调用中的第一个非 False 项get,或将整数作为字符串返回。”

在检查一个True值时,即我们可以查找的值时,Python 将 0 评估为False. 如果 i mod 15 = 0,则为 False,我们将转到下一个。

因此我们NOT每个'mods'(又名余数),所以如果mod == 0,which == False,我们得到一个True 语句。我们乘以True返回字典键的字典键(即3*True == 3

当整数不能被 3、5 或 15 整除时,我们会陷入打印 int 的默认子句,'{}'.format(i)只是将 i 作为字符串插入到该字符串中。

一些输出

嘶嘶声
79
嘶嘶

82嘶嘶声
83
嘶嘶

86
嘶嘶声
88
89
嘶嘶声
91
92
嘶嘶声
94
嘶嘶

97
98
嘶嘶

于 2016-05-18T05:24:22.300 回答