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

已声明全局变量仍出现UnboundLocalError错误的求助

问题原因与解决方法

你的错误出在函数内部未声明要使用全局变量n。Python中,如果在函数里要修改全局变量,必须在函数内部用global关键字声明该变量,否则Python会把它当作局部变量处理,导致UnboundLocalError。

修复步骤

  1. 在count函数开头添加global n声明,明确告诉Python你要操作的是全局作用域的n:
def count(row):
    global n  # 新增这行声明
    if(row == 7):
        n += 1
        return
    for col in range(8):
        if isValid(row,col):
            A[row][col] = 'q'
        count(row + 1)
        a[row][col] = '.'
  1. 修正变量名大小写不一致问题:代码里同时出现了A[row][col]和a[row][col],这会引发新的未定义错误,需统一为同一个变量名(比如全部用A或a)。
  2. 全局作用域中的global b和global n声明完全多余,直接删除即可——全局作用域下定义的变量本身就是全局变量,无需额外声明。

修复后的代码示例

b = []
n = 0

#[some code was cut from here]

def count(row):
    global n
    if(row == 7):
        n += 1
        return
    for col in range(8):
        if isValid(row,col):
            A[row][col] = 'q'
        count(row + 1)
        A[row][col] = '.'  # 统一变量名大小写

b = []
for i in range(8): b.append(list(input()))
n = 0
count(0)
print(n)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:54:36