while -else 问题
n = 2while n < 10:
x = 2
while x < n:
if n % x == 0:
print(n, "=", x, "*", n // x)
break
x += 1
else:
print(n, "是一个素数")
n += 1
打印10以内的素数。
当初始n=2,x=2时,while x<n不成立,不执行循环体内容,执行else语句,打印"2是一个素数"。然后n=n+1,n变为3,x还是2。
下一个循环n=3时,x=2,不满足n%x ==0,不执行print(n, "=", x, "*", n // x)和break,执行x=x+1。不是讲:while-else时,如果循环的条件不再为真是,执行else语句,但这个时候循环的条件为while x<n(while 2<3),为真,为什么会接着执行else下面的打印内容呢?还是说:只要else前面的内容执行不下去的时候就执行else语句呢?
小白一枚,请大神给予指导,谢谢! 在x=x+1后,x=3。3 < 3为假,不继续循环,执行else里的语句。
你忽略了x=x+1后,x=3,而n也是3,你自己说一下3 < 3对不对 你的理解是正确的。在这个嵌套的 while 循环中,else 语句与外层的 while 语句配对,而不是与内层的 while 语句配对。
当内层的 while 循环正常结束时(即条件不再为真),else 语句就会被执行。如果内层的 while 循环是由于遇到了 break 语句而被提前终止的,则不会执行 else 语句。
在第二次循环中,x=2,2<3为真,因此 while 循环继续执行。但是,当 x=3 时,条件 x<n 不再为真,因此 while 循环正常结束,else 语句被执行,打印出了 "3是一个素数"。
有用请设置最佳答案
页:
[1]