各位大大们好
小弟新手学python,使用参考书为[python 程式设计超入门]
目前看到While循环章节,并尝试练习此函数遇到一个小问题
程式内容为
Power = 5
while(True):
print('打')
print('踢')
print('大绝')
Power = Power - 1
if (Power > 0):
break
理论上当Power变成负值时,则会变成 Power > 0 为False,
那么循环就会break,可是为何小弟进入了无限循环呢QQ?
不太懂QQ
作者:
ides13 (juso)
2018-06-02 12:59:00因为ture永远是true看错了收回。没缩排,不确定if是否在while循环内。不会变false只会跳出循环。
你程式码没问题啊,虽然跟你想表达的逻辑不同,但只会印出 打踢大绝 (中间有换行),然后就结束建议你截图,让板友帮忙看一下你实际程式码是怎么缩排的照你PO在这边的程式码,While只会进去一次就会break了
啊,不是应该写 if (Power < 0): break所以你没有忠实给你的真实程式吗?
什么叫做“重新宣告Power = 5 ”?从你回复的内容,我会先猜你这是误解变量可视范围所导致你是不是用Jupyter notebook之类的在练习?
作者:
s8300355 (s8300355)
2018-06-02 15:24:00因为power已经小于0了
你不用道歉啦,大家没有任何负面的意思XD你看你程式码,最最开始第一次会发生什么事?答案:会印出 打踢大绝,Power的最终值会为1,接着因为你写的if条件判断成立,因此跳出While循环
下面你再跑第二次时呢?一样先印打踢大绝,接着Power = Power -1 ,原本Power为1,减1后则为0然后if条件会否成立? 不会吧?因此就会While无穷跑,Power每次都被-1,接着if总是不会成立
可是 while (True)才会执行不是吗? -1>0 不是False吗
While循环有2种方式跳出,一种是判断条件不成立,一种是里面执行到break程式码你的程式码来说,While的判断式永远为True,所以不讨论前者,直接看是否有任何地方会触发后者只有if里面的条件成立,才会执行break而跳出While循环你推文补充的两件事都是对的,你问题在“你想表达的逻辑”跟“程式码表达的逻辑”不同
作者: LaoDa581 2018-06-03 00:25:00
你以后遇到这种问题要debug的话,建议在循环中把power值印出来,就能解惑了
作者:
jp956956 (储备里长伯)
2018-06-03 01:07:00不是因为if成立才会执行break吗可是跑到变负的就不成立不会执行break