sum = 0x = 0while True:? ? if x % 2 == 0:? ? ? ? continue? ? sum += x? ? x = x + 1? ? if x > 20:? ? ? ? break? ? print sum最開始代碼是這樣的,但測試不成功,把x?=?x?+?1放在continue語句的前面就能行,是為什么呢?
2 回答
已采納

清波
TA貢獻165條經驗 獲得超90個贊
原因如果樓主仔細看的話,肯定能看出來,邏輯上很簡單,先把代碼貼出來,下面詳解:
sum?=?0 x?=?0 while?True: ????if?x?%?2?==?0: ????????continue ????sum?+=?x ????x?=?x?+?1 ????if?x?>?20: ????????break ????print?sum
這段代碼的目的就是 求20以內的奇數的和, 總共用了四個知識點,雖然很簡單,我還是啰嗦一遍:
1 ,if 判斷,為真則執行其內的代碼塊.
2 ,while True 循環,很是危險的一條語句,因為while 后面跟著的是布爾常量 True, 所以在其內代碼塊中一定要有能終止循環的關鍵字:break.
3 ,continue, 中斷本次循環,跳到開頭繼續執行.
4 ,break , 終止整個循環.
而題主的問題恰恰就在 continue 語句,拆解來說,第一次循環,x=0,執行到?
if?x?%?2?==?0
循環中斷,跳到循環開頭繼續執行,而它下面的最關鍵的語句?
x?=?x?+?1
沒有執行,所以 x 的值還是0,所以整個循環就變成了死循環,一直在x=0,中斷,x=0, 中斷,x=0,中斷.......,如此自然得不到正確結果,所以x= x+1 必須在continue之前。
添加回答
舉報
0/150
提交
取消