循環的代碼塊執行順序是從上至下嗎
sum?=?0 x?=?1 n?=?1 while?True: ????sum=sum+x ????x=x*2 ????if?n>20: ????????break ????n=n+1 print?sum
為何這樣的代碼結果是錯的?(好像得到的是前21項之和)
sum?=?0 x?=?1 n?=?1 while?True: ????sum=sum+x ????x=x*2 ????if?n>20: ????????break ????n=n+1 print?sum
為何這樣的代碼結果是錯的?(好像得到的是前21項之和)
2016-02-16
舉報
2016-02-17
循環到n=21的時候,先執行sum=sum+x;
然后x=x*2,
再執行break循環
這樣實際上sum算的是前21項之和。
所以:將if判斷放到while行下面就可以了。
2016-02-17
謝謝答復!但是好像還是有點問題,我把if語句放在最底下是可以的(如上代碼)。關鍵好像是在于n=n+1這個賦值是在if語句的上面(先執行)還是下面(后執行)(如下截圖)。
2016-02-17
循環代碼是從上至下執行的。
你的代碼問題出在求和環節,應該把
放在if語句下方。
或者把if放在開頭
或者直接在while上改動條件
原因是,在if判斷循環次數前,sum的值已經發生了改變