亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么x = x + 1要放在最前面

為什么x = x + 1要放在最前面

Lemon_7 2016-03-11 21:50:33
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之前。

查看完整回答
3 反對 回復 2016-03-12
?
冷月元

TA貢獻2條經驗 獲得超0個贊

因為continue是跳出本次循環,繼續下一次循環;還有一個break是跳出本層循環,結束這一個循環,這兩個不要搞混了

查看完整回答
反對 回復 2016-03-12
  • 2 回答
  • 0 關注
  • 1662 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號