任何人都可以解释以下代码
x=0
while x<7:
if x==5:
continue
print(f'value of x is:{x}')
x+=1
此代码的输出为:
value of x is:0
value of x is:1
value of x is:2
value of x is:3
value of x is:4
答案 0 :(得分:4)
不是跳过值5
;它落在值为5的infinite loop上。
continue
语句重新启动了循环,但是由于您从未更改过x
的值,因此在随后的循环中继续满足x == 5
条件,并且无限重复重复相同的行为。
您没有看到此消息,因为您正在Jupyter中运行,但该程序尚未返回,这一点并不明显。如果在Python Shell上运行,或者编写脚本并使用python解释器执行脚本,它将永久旋转,将CPU固定为100%,并且永远不会返回接受进一步的输入。
有多种解决方法。
for
循环一个for
循环遍历值的集合(可能是可迭代的值,也可能是由生成器函数生成的值yield
),直到没有剩余值为止。相比之下,while
循环将一直运行直到其条件为假。
在您要迭代的项目数量有限的情况下,使用这种循环通常更惯用,如示例所示。 range(x, y)
是一种简单的机制,用于获取区间[x, y)
中的整数。
for x in range(0, 7):
if x == 5:
continue
print(f'value of {x}')
使用while
循环的替代解决方案(此处包含了指导性内容):
x
在每次循环中增加x
的值
x = -1
while x < 7:
x += 1
if x == 5:
continue
print(f'value of {x}')
print
调用周围使用条件x = 0
while x < 7:
if x != 5:
print(f'value of {x}')
x += 1
答案 1 :(得分:2)
由于到达5
会continue
,因此您无需增加x
的值就可以重新开始循环。
恭喜,您编写了一个无限循环;-)
要解决此问题,无论如何应该增加x
。
答案 2 :(得分:2)
自第五次迭代以来,该循环变为不定式循环。为避免这种情况,您必须将“ x + = 1”行移至迭代中的第一个操作:
x = 0
while x <= 7:
x += 1
if x == 5:
continue
print(x)
但是通常,如果要迭代X次,最好使用for循环
for x in range(8):
if x == 5: continue
print(x)