如果我将变量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
答案 0 :(得分:4)
while numCount < 100:
表示numCount 小于 100.如果numCount == 100
或更高的数字,则while循环将无法运行。
您的意思是<=
吗? <=
是“小于或等于”的运算符。
答案 1 :(得分:0)
看看while循环:
while numCount < 100
你可能已经知道它意味着&#34;而numCount小于100&#34;。这就是麻烦。请参阅,如果numCount为25,Python第一次将其解释为:
while 25 < 100
现在,说numCount是100.Python解释这样的语句:
while 100 < 100
看到问题?你基本上说'#34;而100小于100&#34;。但100永远不会少于100!因此,循环永远不会运行。您可以使用&lt; =而不是&lt;。这意味着&#34;小于或等于&#34;。因此,如果numCount的内容小于或等于100,则循环将运行。这可能就是你想要的。
答案 2 :(得分:0)
这个问题非常陈旧,但我想在这里添加一个答案,基于我看到here的一些很酷的东西,上周查找了一个不相关的主题。
FizzBuzz:对于100以下的整数,如果整数可以被3和5整除,则打印FizzBuzz(15);如果它能被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调用的字典键的值。
&#34;在get
调用中获取第一个非False项,或者将整数作为字符串返回。&#34;
当检查True
值时,我们可以查找一个值,Python将0评估为False
。如果i mod 15 = 0,那就是False,我们将转到下一个。
因此,我们NOT
每个&#39; mods&#39; (又名其余的),所以如果mod == 0,其中== False,我们得到一个True语句。我们将True
乘以返回字典键的字典键(即3*True == 3
)
当整数不能被3,5或15整除时,我们将落入打印int '{}'.format(i)
的默认子句,只需将i插入到该字符串中 - 作为字符串。
部分输出
费兹
79个
巴兹
费兹
82个
83个
费兹
巴兹
86个
费兹
88个
89个
FizzBuzz
91个
92个
费兹
94个
巴兹
费兹
97个
98个
费兹
Buzz