Py学习  »  Python

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

Praveen Kumar • 7 年前 • 2296 次点击  

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
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38884
文章 [ 3 ]  |  最新文章 7 年前
Mikhail
Reply   •   1 楼
Mikhail    8 年前

从第五次迭代开始,循环变为不定式循环。要防止这种行为,必须将“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)
Léopold Houdin
Reply   •   2 楼
Léopold Houdin    8 年前

因为一旦你到达 5 你 continue 因此,在循环开始时,不增加 x .

恭喜你,你写了一个无限循环;-)

为了解决这个问题,您应该增加 X 无论如何。

Cosmic Ossifrage
Reply   •   3 楼
Cosmic Ossifrage    8 年前

不是这样的 跳过 价值 5 它掉进了 infinite loop 在值5处。

这个 continue 语句重新启动循环,但因为从未更改 x 在执行此操作之前,在随后通过循环时, x == 5 条件继续得到满足,同样的行为被重复 无限大 .

你看不到这一点,因为你在Jupyter运行,在那里程序没有返回并不明显。如果在python shell上运行,或者编写一个脚本并使用python解释器执行它,那么它将永远旋转,将CPU固定在100%,并且永远不会返回接受进一步的输入。


分辨率

有多种方法可以解决这个问题。

(推荐)使用 for 环

一 对于 循环迭代一组值(可能是ITerable或值 yield 直到没有剩余值。相比之下,A while 循环将永远运行,直到其条件为假。

如果要迭代的项目数量已知且有限,那么通常使用这样的循环更为惯用,如示例中所示。 range(x, y) 是获取间隔中整数的简单机制 [x, y) .

for x in range(0, 7):
  if x == 5:
    continue
  print(f'value of {x}')

使用 虽然 循环(此处包含其指导性质):

增量 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