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

Python3 函数内声明global后仍无法递增全局count变量问题排查

问题原因

你遇到的问题根本不是global声明无效,是打印count的时机早于count修改的逻辑:
你的main函数执行顺序是:

  1. 先打印全局变量count的初始值0
  2. 之后才调用findthesum函数对count做递增操作
    你打印的是还没被修改的初始值,自然看不到递增后的结果。
修复方案

只需要调整打印count的位置,放在findthesum调用之后即可。也可以同时优化2的幂的判断逻辑,不需要预生成列表,用位运算判断效率更高:2的整数次幂的二进制表示只有1个1,满足x > 0 且 x & (x-1) == 0的条件。

修复后完整代码

count=0

def findthesum(a,n):
    global count
    sum=0
    for j in range(n):
        num = a[j]
        if num > 0 and (num & (num - 1)) == 0:
            count += 1
            sum += num
    return sum
            
def main():
    global count
    n=5
    a=[1,2,3,4,5]
    print(findthesum(a,n))
    # 放在调用之后打印count
    print(count)
    
main()

运行后输出结果符合预期:

7
3

符合条件的元素是1、2、4,和为7,数量为3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:15:03