Python使用while True循环生成目标数组[0,2,0,4,0]结果不符排查
问题原因
- 代码中
x == 4的判断分支属于不可达代码:第一个if x == 2的判断逻辑中,不管条件是否成立,都会执行continue直接跳转到下一轮循环,永远不会执行后续判断x等于4的代码。 - 各x值的实际执行逻辑:
- x=1:不满足x==2,走else分支append 0,执行continue跳转到下一轮循环
- x=2:满足x==2,append 2,执行continue跳转到下一轮循环
- x=3:不满足x==2,走else分支append 0,执行continue跳转到下一轮循环
- x=4:不满足x2,走else分支append 0,执行continue跳转到下一轮循环,不会触发x4的判断
- x=5:不满足x==2,走else分支append 0,执行continue跳转到下一轮循环
因此最终输出结果为[0, 2, 0, 0, 0],和预期不符。
修复方案
方案1:合并判断条件
将相等判断合并,去掉多余的continue分支,代码如下:
m = [] while True: for x in range(1, 6): if x == 2 or x == 4: m.append(x) else: m.append(0) break print(m)
方案2:保留分支判断,调整continue位置
如果你需要保留分开的条件判断写法,可调整continue的位置,只在匹配到目标值时跳出本轮循环即可:
m = [] while True: for x in range(1, 6): if x == 2: m.append(x) continue if x == 4: m.append(x) continue m.append(0) break print(m)
两种方案运行后都可得到预期输出[0, 2, 0, 4, 0]。
内容的提问来源于stack exchange,提问作者Ahsan Akhtar
相关产品推荐
相关产品推荐

