Re: [問題] while迴圈問題

看板Python作者 (吱吱)時間7年前 (2018/06/02 15:21), 編輯推噓4(4015)
留言19則, 6人參與, 7年前最新討論串3/4 (看更多)
抱歉,我是使用IDLE,我真的是新手 對於程式的問題描述不是很好 我第一次執行這個程式是正常的,他可以回傳我如期的結果 如下 https://i.imgur.com/mcNumvB.jpg
但當我連續執行第二次,則進入無限迴圈,如下 https://i.imgur.com/VExBbOg.jpg
※ 引述《MOONY135 (談無慾)》之銘言: : ※ 引述《TW185930 (吱吱)》之銘言: : : 各位大大們好 : : 小弟新手學python,使用參考書為[python 程式設計超入門] : : 目前看到While迴圈章節,並嘗試練習此函數遇到一個小問題 : : 程式內容為 : : Power = 5 : : while(True): : : print('打') : : print('踢') : : print('大絕') : : Power = Power - 1 : : if (Power > 0): : : break : : 理論上當Power變成負值時,則會變成 Power > 0 為False, : : 那麼迴圈就會break,可是為何小弟進入了無限迴圈呢QQ? : : 不太懂QQ : 你的寫法跟你的想法完全不一樣 : 你這樣只會印第一次 而且Power =4 : if(Power >0): : break; : 你第一次進去就等於結束了 不會有啥無窮迴圈這件事情 -- 當他們關掉MegaUpload的時候, 我保持沉默;我還有FileSonic。 當他們關掉FileSonic的時候, 我保持沉默;我還有FileServe。 當他們關掉FileServe的時候, 我保持沉默;我還有MediaFire。 當他們關掉MediaFire的時候, 我保持沉默;我還有BT。 當他們關掉BT伺服器的時候, 我已一無所有了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.15.169 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1527924117.A.364.html

06/02 15:23, 7年前 , 1F
你POWER設定2 減了兩次1就等於0 0不會>0所以不會BREAK
06/02 15:23, 1F

06/02 15:24, 7年前 , 2F
理論上你應該是寫if power < 0: break才比較符合你想法
06/02 15:24, 2F

06/02 15:24, 7年前 , 3F
可是為什麼我第一次執行 卻能break
06/02 15:24, 3F

06/02 15:25, 7年前 , 4F
因為你第一次執行 POWER = 1 1>0所以BREAK了...
06/02 15:25, 4F

06/02 15:25, 7年前 , 5F
但我第二次重新輸入同樣的while (True) ,卻進入迴圈XD
06/02 15:25, 5F

06/02 15:25, 7年前 , 6F
第二次執行 POWER = 0就不會符合你的BREAK條件
06/02 15:25, 6F

06/02 15:26, 7年前 , 7F
因爲已經是0了拔
06/02 15:26, 7F

06/02 15:49, 7年前 , 8F
power<=0後,if的條件不成立,while就不會break
06/02 15:49, 8F

06/03 17:39, 7年前 , 9F
你先用紙筆 把每次迴圈執行的邏輯跟變數狀態紀錄下來
06/03 17:39, 9F

06/03 17:39, 7年前 , 10F
,自己手動把迴圈寫完。這種程度的bug剛好是練習的好
06/03 17:39, 10F

06/03 17:39, 7年前 , 11F
機會
06/03 17:39, 11F

06/07 14:22, 7年前 , 12F
原 Po應該有一個地方誤會了 你的 while(True) 這邊的意
06/07 14:22, 12F

06/07 14:22, 7年前 , 13F
思是我的 while永遠會執行 因為它就是指名(while)的判
06/07 14:22, 13F

06/07 14:22, 7年前 , 14F
斷永遠是 True
06/07 14:22, 14F

06/07 14:22, 7年前 , 15F
而後面的 if不管怎樣搞 他的判斷是只會是 if的 永遠不
06/07 14:22, 15F

06/07 14:22, 7年前 , 16F
會影響 while
06/07 14:22, 16F

06/07 14:24, 7年前 , 17F
第一次會停下來 只是因為遇到 break跟任何的判斷 True
06/07 14:24, 17F

06/07 14:24, 7年前 , 18F
False沒有半點關係 你可以試試看吧 break拿掉把 print
06/07 14:24, 18F

06/07 14:24, 7年前 , 19F
大絕放進去看看結果
06/07 14:24, 19F
文章代碼(AID): #1R4aMLDa (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 3 之 4 篇):
文章代碼(AID): #1R4aMLDa (Python)