代碼出了什么問題呢
sum=0
i=1
while True:
? ? if i%2==0:
? ? ? ? continue
? ? sum=sum+i
? ? i=i+1
? ? if i>100:
? ? ? ? break
print (sum)
sum=0
i=1
while True:
? ? if i%2==0:
? ? ? ? continue
? ? sum=sum+i
? ? i=i+1
? ? if i>100:
? ? ? ? break
print (sum)
2020-02-05
舉報(bào)
2020-02-05
左側(cè)圖示的代碼可以達(dá)到題主想要的目的。這里要明確兩個概念:
continue和break的:
????break:用來跳出整個循環(huán)
????continue:跳過本次循環(huán)體中余下尚未執(zhí)行的語句,立即進(jìn)行下一 ????次的循環(huán),可以理解為僅結(jié)束本次循環(huán)。
在這里,題主的代碼塊是個死循環(huán)。
i=1時,沒問題,代碼可以執(zhí)行,執(zhí)行一次循環(huán)后,i=2
i=2時,將執(zhí)行continue,此時,后續(xù)代碼不會被執(zhí)行,所以 i 不會執(zhí)行+1,直接跳到下一次循環(huán),當(dāng)下一次執(zhí)行時,i 還是2,此時構(gòu)成死循環(huán)。
2020-02-06
明白了,謝謝
2020-02-05
在循環(huán)過程中,可以用break退出當(dāng)前循環(huán),還可以用continue跳過后續(xù)循環(huán)代碼,繼續(xù)下一次循環(huán)。
您的continue用錯啦
題目要求是100以內(nèi)奇數(shù)和,所以邏輯是判斷i是否已經(jīng)超過100,判斷i是否為奇數(shù)
所以i值的更新需要在continue前面
您的代碼會在第三行至第五行(第二次循環(huán)時,也就是i = 2 s時)陷入死循環(huán),continue外的那個if(第四行)一旦條件符合(i為偶數(shù)),就會返回while?ture(第三行),此時?i并未更新,始終等于2
故我會修改為:
sum = 0
i = -1
while True:
? ? i = i + 1
? ? if i > 100:
? ? ? ? break
? ? if i % 2 == 0:
? ? ? ? continue
? ? sum = sum + i
print sum