社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Praveen Kumar • 7 年前 • 2281 次点击  

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