For循环在输入生成的列表中只返回第一项

问题描述:

获得用户输入后,打印shopping_list给出所有输入,但是我的for循环功能只返回第一个输入。有谁知道为什么for循环没有返回列表中的所有输入项目?For循环在输入生成的列表中只返回第一项

shopping_list = [] 

a = input("This is shopping bot. Tell me one thing you want to buy: ") 
b = input("And then... ") 

def g(): 
    for i in shopping_list: 
     return (i) 

shopping_list.extend(a,b) 
print(shopping_list) 

print("Here's your shopping list : \n",g()) 
+0

你的g()函数返回i,那只有一个值,如果你想返回所有的只是打印购物清单并摆脱g()函数 –

+0

看来,你需要寻找连接方法。 'print(“,”.join(shopping_list))' – Lafexlos

你的第一次迭代过程中使用return其退出函数,并返回项目i,所以你的循环退出。

我不知道你想什么来实现,所以我不能推荐任何

+0

想要打印用户输入 –

+0

生成的列表的内容,那么你应该使用连接,就像这里几个人所建议的一样。如果你坚持有一个函数调用,你可以让'g'的内容为:'return“,”.join(shopping_list)' – Nullman

遇到一个return语句后函数调用结束。发生这种情况的原因是因为在for循环内,您正在使用return语句。它将在返回第一个元素后退出。如果你反转你的列表并将它用作函数的输入,你将得到原始列表的最后一个元素。

一个更好的形式给出了这个问题会是这样的:

shopping_list = input("This is shopping bot. List things you want to buy: ").split(',') 

print("Here's your shopping list: \n", '\n'.join(shopping_list)) 

通过这种方式,用户可以输入n元素。

+0

只要确保列出了用逗号分隔每个项目的元素。否则,你会得到一个错误,因为它没有捕捉到它们。 – narn