首页 > 解决方案 > 为什么这个 for 循环返回一个空列表?

问题描述

这是我目前拥有的:

messages = {
  "Placeholder": 0,
  "1": 48,
  "2": 4,
  "3": 31,
  "4": 2
}

def pls():


    messages_sorted = sorted(messages, key=messages.get, reverse=True)

    for i in range(10):
        output = []
        try:
            currp = str(messages_sorted[i])
            if currp == "Placeholder":
                print("PLACEHOLDER DETECTED")
                return output
            currpp = messages[currp]
            output.append(f"{currp} has {currpp} and is Place {i+1}")
            print(output)

        except IndexError:
            print("Index error")

        except:
            print("some other error")
    
    return output

output = pls()
output = str(output)
output = output.replace("['", "")
output = output.replace("']", "")
print(output)

我已经使用这个问题的答案来制作不同的输出列表,但是当我运行它时,它返回一个空列表。当我删除以下部分时:

if currp == "Placeholder":
            print("PLACEHOLDER DETECTED")
            return output

我只是得到一堆索引错误。这

print(output)

在 for 循环中,我得到了我在控制台中需要的东西(作为不同的字符串),但是我不能将它作为 List 或变量返回。我怎样才能做到这一点?

标签: pythonpython-3.xlistfunctionreturn

解决方案


output=[]在你的 for 循环中。output=[]所以在每次迭代时,它的值都会重新初始化,你应该在 for 循环之前再试一次


推荐阅读