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
解决方案
它没有跳过价值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
推荐阅读
- python-docx - 在 python-docx 中将大纲级别更改为正文文本
- javascript - Vue、Apollo、GraphQL:“TypeError:无法读取未定义的属性‘watchQuery’”
- python - 返回至少前 n 行的 DataFrame
- google-apps-script - 发出 setCurrentCell() 后无法输入当前单元格
- python - “错误根:未找到哈希 md5 的代码。” 运行 virtualenv python3 时
- javascript - Fetching multiple data from JSON in lists
- vb.net - 编写一个接受一维或二维数组作为输入的函数 - vb.net
- python - 对数据结构图中的边进行排序
- node.js - 在数字海洋sequelize node js中进行部署时出错
- javascript - 在引用数组中找到被点击的元素 (useRef)