我试图调用函数外部的值但出现错误。 这是代码的一部分:
for element in initial_valid_pos:
i = 0
g = 1
z = -1
def loop():
for element2 in valid_pos[1 + i]:
if int(element) == (int(element2) + z):
print(element)
if int(element) == (int(element2) + g):
print(element)
else:
pass
i = i + 1
z = z - 1
g = g + 1
loop()
正如你所看到的,首先给I赋值0,依此类推,然后我开始在里面循环,而在循环内部我希望增加i
,z
的值, g
。
UnboundLocalError: local variable 'i' referenced before assignment
答案 0 :(得分:1)
首先请注意,Python在很大程度上依赖于缩进。我想你知道的,但是你似乎已经在第一个loop()
循环里面定义了for
函数,这对我来说听起来令人生畏,至少可以说(我实际上甚至不知道是否允许这样做。
无论如何,你似乎不需要在你的例子中,所以只需对函数定义进行定义并将这些变量作为参数传递,例如:
def loop():
for element2 in valid_pos[1 + i]:
if int(element) == (int(element2) + z):
print(element)
if int(element) == (int(element2) + g):
print(element)
else:
pass
loop(i + 1, g + 1, z - 1)
for element in initial_valid_pos:
loop (0, 1, -1)
我不保证代码按预期工作,但对我来说仍然没有多大意义。
答案 1 :(得分:0)
替换:
def loop():
for element2 in valid_pos[1 + i]:
使用:
def loop():
global i, g, z
for element2 in valid_pos[1 + i]: