已声明全局变量仍出现UnboundLocalError错误的求助
问题原因与解决方法
你的错误出在函数内部未声明要使用全局变量n。Python中,如果在函数里要修改全局变量,必须在函数内部用global关键字声明该变量,否则Python会把它当作局部变量处理,导致UnboundLocalError。
修复步骤
- 在
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] = '.'
- 修正变量名大小写不一致问题:代码里同时出现了
A[row][col]和a[row][col],这会引发新的未定义错误,需统一为同一个变量名(比如全部用A或a)。 - 全局作用域中的
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
相关产品推荐
相关产品推荐

