以下代码python代码的输出是什么

时间:2018-09-22 17:39:09

标签: python

python

任何人都可以解释以下代码

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

3 个答案:

答案 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)

由于到达5continue,因此您无需增加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)