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
提交
取消