【Python】for循环里的循环变量影响了外部的同名变量的值

运行代码的时候有一个值的输出一直不是我想要的,经过一番检查之后发现,问题出在两层for循环用了同名的循环变量,最后输出的就是这个循环变量,由于里层for循环改变了循环变量的值,导致最后输出结果不正确。
出错的代码如下:

def test(shotnum,time):
    # 测试输出
    for i in shotnum:#shotnum=[112984,112985,112986,112988,112995]
       '''
       ***********************
       *******很多行代码*******
       ***********************
       '''
       a = id.count(0)  # 统计"0"的个数
            for i in range(a):  # 控制循环次数
                id.remove(0)  # remove方法删除"0",获得新id
            if max(set(id), key=id.count) == 1:  # 获得输出中出现次数最多的类型
                print(i, ': N=1 t mode')
            elif max(set(id), key=id.count) == 2:
                print(i, ': N=2 t mode')
            elif max(set(id), key=id.count) == 3:
                print(i, ': N=1 fb')
       '''
       ***********************
       *******很多行代码*******
       ***********************
       '''

我以为里层for循环的循环变量的作用范围只在里层for循环,循环变量在里层for循环被从0开始赋值,循环结束后对外层for循环的循环变量不构成影响。
但实际是里层for循环的循环变量确实是从0开始被赋值*(循环变量i在进入里层for循环之前的值是112984,a的值是4924,如果里层for循环的循环变量直接使用外层for循环的循环变量的值,这个for循环根本不会执行,但是里层for循环完完整整地被执行了,说明里层for循环的循环变量的值并不是外层for循环的循环变量的值,后来我对代码进行了调试,调试结果也证明里层for循环的循环变量是从0开始被重新赋值的)*,但是最后一次循环后,循环变量获得的值,在出了里层for循环之后,被赋给了外层for循环的循环变量。

经过查找资料之后了解到这是因为外层循环变量 和 里层循环变量是处于一个作用域, 都是模块级别的变量。 所以都在模块级别的变量,不能重复。

解决方法是修改循环变量的名称,里层变量不要和外层变量名一样,这样两个变量名称,就不会冲突了,结果正确输出。

积累到知识了,记录一下

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值