尝试根据以前的条件遍历一个列表,该列表可能为空也可能不是空。
代码如下:
function_name():
for x in gen:
if x = attacker1:
gain += 2
elif x = attacker2:
gain += 3
else:
gain -= 1
if not gen:
gain -= 1
return gain
当列表中存在一个变量时,代码将起作用。当没有变量存在时,代码不起作用,并且我收到以下错误消息:
ErrorMessage:分配前引用了本地变量'gain'
我也尝试过:
function_name():
for x in gen:
if x = attacker_1:
gain += 2
elif x = attacker2:
gain += 3
else:
gain -= 1
if gen == False:
gain -= 1
return gain
上面的代码给了我同样的错误信息。
此外,不确定在for循环中是否需要“ else”语句,但我放在那里是为了安全。
任何帮助都倍受赞赏。谢谢!
答案 0 :(得分:5)
没有在任何地方声明收益,所以你做不到
gain += 2
因为您不能将2加到尚不存在的地方。
所以你必须写
gain = 0
在功能开始时。
该错误消息非常有用。
答案 1 :(得分:1)
该错误消息基本上是在使用前需要声明和初始化“增益”。尝试返回它时,它已超出范围。
尝试放入
gain = 0
该功能的开头。
答案 2 :(得分:0)
您的代码有几个问题,但是您现在遇到的问题是gain
在引用之前从未声明过。 Python很高兴让您添加到现有变量,但是如果gain
还不存在,我们如何知道它的值是什么? (我们可以直观地认为它是0
,但是由于python不能确定,它告诉您在赋值之前要引用该变量。)
此外,您还需要注意-您的if
语句正在使用赋值=
,而不是比较==
。
这是您代码的有效版本。
def function_name(gen):
attacker1 = 0
attacker2 = 1
gain = 0
for x in gen:
if x == attacker1:
gain += 2
elif x == attacker2:
gain += 3
else:
gain -= 1
if not gen:
gain -= 1
return gain
print(function_name([0, 1, 2]))