为了账号安全,请及时绑定邮箱和手机立即绑定

为什么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 关注
  • 1615 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信