首页 > 解决方案 > 对 Python 编程有点陌生,正在尝试一个问题。我只是不知道为什么这个错误不断弹出。对我来说真的没有意义

问题描述

这就是问题:创建一个名为的函数,该函数将add_greetings()名为名称的字符串列表作为参数。

在函数中,创建一个包含每个问候语的空列表。"Hello, "在名称中的每个名称前面添加字符串,并将问候语附加到列表中。

返回包含问候语的新列表。

相当基本的问题,但我不小心在函数之外初始化了新列表,如下所示:

new_lst = []

def add_greetings(names):
    for name in names:
        name = "Hello, " + name
        new_lst.append(name)
    return new_lst

print(add_greetings(["Owen", "Max", "Sophie"]))

这是 Codecademy 上的一个问题,它给了我这个错误:

add_greetings(["Owen", "Max", "Sophie"])应该返回['Hello, Owen', 'Hello, Max', 'Hello, Sophie']了,它返回了[‘Hello, Owen’, ‘Hello, Max’, ‘Hello, Sophie’, ‘Hello, Owen’, ‘Hello, Owen’, ‘Hello, Max’, ‘Hello, Sophie’]

为什么会这样?在 Python IDE 上尝试过,它给了我预期的正确答案。

标签: pythonlistloops

解决方案


您应该尝试在函数内实例化 new_list :

def add_greetings(names):
    new_lst = []
    for name in names:
        name = "Hello, " + name
        new_lst.append(name)
    return new_lst

print(add_greetings(["Owen", "Max", "Sophie"]))

当 Codeacademy 测试时最终会发生什么,它们将运行多个测试用例。当你多次运行你的方法时,它会一遍又一遍地追加到同一个列表中,因此会返回错误的结果。这可以通过将列表初始化放在函数本身中来缓解,因此您每次都重新开始。


推荐阅读