遍历一个空列表

时间:2019-10-15 14:30:28

标签: python for-loop

尝试根据以前的条件遍历一个列表,该列表可能为空也可能不是空。

代码如下:

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”语句,但我放在那里是为了安全。

任何帮助都倍受赞赏。谢谢!

3 个答案:

答案 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]))

Demo