首页 > 解决方案 > 以下代码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

标签: python

解决方案


它没有跳过价值5;它在值为 5 时陷入无限循环。

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

推荐阅读