问题描述
x = int(input())
y = int(input())
print([[x,y] for x in range(x) for y in range(y)])
以上,每当我使用迭代器变量作为 x 和 y,'它显示一个错误'
但是当我将其更改为 a 和 b 时,'它工作正常'见下文
x = int(input())
y = int(input())
print([[a,b] for a in range(x) for b in range(y)]) #this is working fine
谁能告诉我 UnboundLocalError
背后的原因?
解决方法
问题在于您在列表理解中“重新声明”了 x
。这是发生在微观事件中的情况:
-
x = int(input())
。x
被声明并分配有用户输入。 -
y = int(input())
。y
被声明并分配有用户输入。 -
for x
。x
在更局部的范围内(在列表推导式中)声明,但未分配。 -
in range(x)
。迭代被定义为发生在range(x)
的结果内。由于x
当前未分配给任何值,因此您的UnboundLocalError
异常发生。
正如您已经看到的,解决方案只是为迭代使用不同的变量。