You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何检测循环过程中变量是否曾被赋值为True

问题根源

你现有代码每次循环都会根据当前元素的值覆盖found的状态:只要当前元素不等于21,就会把found强制设为False。这就导致循环结束后found保存的只是最后一个元素的匹配结果,无法反馈整个遍历过程中是否出现过目标值21。

最小改动修复方案

核心逻辑是:一旦found被赋值为True(代表已经找到过目标值),后续循环就不要再把它改回False。如果要尽可能保留原有代码结构,只需要给else分支的赋值加一个判断条件即可,不需要大幅调整代码:

found = None 
print ('Before', found)
for value in [ 41, 5, 77, 3, 21, 55, 6]:
    if value == 21:
        found = True
    elif found is not True:
        # 仅在之前从未找到过目标值时,才把found设为False
        found = False 
    print (found, value)
print ('After', found)

运行效果说明

  • 遍历到21之前,found会随着不匹配的元素持续被设为False
  • 遍历到21时,found被设为True
  • 后续遍历55、6两个不匹配元素时,因为found已经是True,不会再被覆盖回False
  • 最终print('After', found)会正确输出True,反馈整个循环过程中确实存在目标值21

如果你不需要保留初始found = None的设定,还可以把代码写得更简洁,直接删掉else分支即可:

found = False 
print ('Before', found)
for value in [ 41, 5, 77, 3, 21, 55, 6]:
    if value == 21:
        found = True
    print (found, value)
print ('After', found)

内容的提问来源于stack exchange,提问作者FruitBoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:27:25