为什么这个 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 或变量返回。我怎样才能做到这一点?


喵喵时光机
浏览 98回答 2
2回答

白板的微信

你output=[]在你的for循环里面。output=[]因此,在每次迭代时,它的值都会重新初始化,您应该在 for 循环之前重试

慕桂英3389331

当您返回时,您的output列表是空的,因为每次for loop重新启动时都会重置列表。您的代码应如下所示:  messages = {  "Placeholder": 0,  "1": 48,  "2": 4,  "3": 31,  "4": 2             }def pls():    messages_sorted = sorted(messages, key=messages.get, reverse=True)    output = []    for i in range(10):                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 outputoutput = pls()output = str(output)output = output.replace("['", "")output = output.replace("']", "")print(output)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python