python - 对 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 上尝试过,它给了我预期的正确答案。
解决方案
您应该尝试在函数内实例化 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 测试时最终会发生什么,它们将运行多个测试用例。当你多次运行你的方法时,它会一遍又一遍地追加到同一个列表中,因此会返回错误的结果。这可以通过将列表初始化放在函数本身中来缓解,因此您每次都重新开始。
推荐阅读
- java - 如何使用按钮在 x/y 网格上添加点
- python - 为什么我的 Keras CNN 总是猜一个数字?为什么我的Loss这么高?
- html - 如何使表格响应移动设备并将某些列放在其他列下方
- java - 控制器中的Java MVC ActionListener,视图中的JButton。我如何将这些链接在一起?
- optimization - 斯坦纳树和完全图之间的图
- r - R 创建函数来运行许多假设检验
- angular - 如何解决错误上下文在离子/角度中调试上下文
- mysql - 关于更新子/父表的 MYSQL 错误
- react-native - 有没有办法获得 react-native-swiper 的滑动进度?
- python - 如何避免此熊猫数据帧处理的迭代