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