[問題] 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