[问题] while循环问题

楼主: TW185930 (吱吱)   2018-06-02 12:53:02
各位大大们好
小弟新手学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只会跳出循环。
作者: kobe8112 (小B)   2018-06-02 13:24:00
你程式码没问题啊,虽然跟你想表达的逻辑不同,但只会印出 打踢大绝 (中间有换行),然后就结束建议你截图,让板友帮忙看一下你实际程式码是怎么缩排的照你PO在这边的程式码,While只会进去一次就会break了
作者: kenduest (小州)   2018-06-02 13:48:00
啊,不是应该写 if (Power < 0): break所以你没有忠实给你的真实程式吗?
作者: kobe8112 (小B)   2018-06-02 14:16:00
什么叫做“重新宣告Power = 5 ”?从你回复的内容,我会先猜你这是误解变量可视范围所导致你是不是用Jupyter notebook之类的在练习?
作者: MOONY135 (谈无欲)   2018-06-02 14:58:00
你的写法跟你想要做的事情完全不一样...
作者: s8300355 (s8300355)   2018-06-02 15:24:00
因为power已经小于0了
作者: kobe8112 (小B)   2018-06-02 15:25:00
你不用道歉啦,大家没有任何负面的意思XD你看你程式码,最最开始第一次会发生什么事?答案:会印出 打踢大绝,Power的最终值会为1,接着因为你写的if条件判断成立,因此跳出While循环
楼主: TW185930 (吱吱)   2018-06-02 15:26:00
第一次就像我想的一样 跑一次循环就终止了
作者: kobe8112 (小B)   2018-06-02 15:27:00
下面你再跑第二次时呢?一样先印打踢大绝,接着Power = Power -1 ,原本Power为1,减1后则为0然后if条件会否成立? 不会吧?因此就会While无穷跑,Power每次都被-1,接着if总是不会成立
楼主: TW185930 (吱吱)   2018-06-02 15:29:00
可是 while (True)才会执行不是吗? -1>0 不是False吗
作者: kobe8112 (小B)   2018-06-02 15:30:00
While循环有2种方式跳出,一种是判断条件不成立,一种是里面执行到break程式码你的程式码来说,While的判断式永远为True,所以不讨论前者,直接看是否有任何地方会触发后者只有if里面的条件成立,才会执行break而跳出While循环你推文补充的两件事都是对的,你问题在“你想表达的逻辑”跟“程式码表达的逻辑”不同
楼主: TW185930 (吱吱)   2018-06-02 15:36:00
了解!! 感谢kobe大!
作者: kobe8112 (小B)   2018-06-02 15:42:00
不会,有帮到就好XD
作者: LaoDa581   2018-06-03 00:25:00
你以后遇到这种问题要debug的话,建议在循环中把power值印出来,就能解惑了
作者: jp956956 (储备里长伯)   2018-06-03 01:07:00
不是因为if成立才会执行break吗可是跑到变负的就不成立不会执行break

Links booklink

Contact Us: admin [ a t ] ucptt.com