我正在尝试编写一个列表的函数。 该功能需要用户输入。 该函数将提示输入用户输入元素的输入。 该元素将添加到列表中。 当用户输入某个元素即字符串时,该函数返回列表。
因此,当我运行该函数时,它应该是这样的:
Input an element: 100
Input an element: 200
Input an element: 300
Input an element: Stop
[100, 200, 300]
到目前为止,这是我的进步:
def list_maker():
"""Make a list from input"""
result = []
def main():
element = input("Input an element: ")
if element == "Stop":
print(result)
else:
main()
main()
list_maker()
答案 0 :(得分:1)
这就是我想要实现的目标:
final_list = []
while 1:
user_input = input("Input an element: ")
if user_input == "Stop":
break
final_list.append(user_input)
print(final_list)
将其合并到现有代码中:
def list_maker():
"""Make a list from input"""
result = []
while 1:
user_input = input("Input an element: ")
if user_input == "Stop":
break
result.append(user_input)
print(result)
list_maker()
此while
循环一直持续到if
语句内部触发。 break
内的if
导致循环退出,然后循环后执行任何操作。
这是运行程序时的样子:
Input an element: 100
Input an element: 200
Input an element: 300
Input an element: Stop
[100, 200, 300]
您尝试过的方法不起作用是因为您从未真正将element
添加到result
列表中。如果您仍想使用递归解决方案而不是while
循环,只需添加一行代码element
添加到列表中:
def list_maker():
"""Make a list from input"""
result = []
def main():
element = input("Input an element: ")
if element == "Stop":
print(result)
else:
result.append(element) # Added
main()
main()
list_maker()
答案 1 :(得分:0)
您不需要休息,也不需要递归地执行此操作。保持简单:
def list_maker(result):
"""Make a list from input"""
element = input("Input an element: ")
while element != "Stop":
result.append(int(element)) # In your example you listed numbers, not strings, the int() function will turn the element into a number
element = input("Input an element: ")
result = []
list_maker(result)
print(result)
如果希望结果存在于函数之外,则需要在函数外部声明它。列表是可变的,这意味着append函数实际上将更改函数内的结果列表。这样你就可以在list_maker运行后打印出来。您可能希望让用户更容易退出。更新while行,如果他们不输入数字,它将退出:
while element.isdigit():