最开始代码是这样的,但测试不成功,把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之前。