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

sum = 0

x = 0

while True:

    if x % 2 == 0:

        continue

    sum += x

    x = x + 1

    if x > 20:

        break

    print sum

最开始代码是这样的,但测试不成功,把x = x + 1放在continue语句的前面就能行,是为什么呢?


Lemon_7
浏览 1616回答 2
2回答

清波

原因如果楼主仔细看的话,肯定能看出来,逻辑上很简单,先把代码贴出来,下面详解: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之前。

冷月元

因为continue是跳出本次循环,继续下一次循环;还有一个break是跳出本层循环,结束这一个循环,这两个不要搞混了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python