Python - 多次请求输入直到某个输入禁用它

时间:2016-04-06 19:02:54

标签: list python-3.x input

我正在尝试编写一个列表的函数。 该功能需要用户输入。 该函数将提示输入用户输入元素的输入。 该元素将添加到列表中。 当用户输入某个元素即字符串时,该函数返回列表。

因此,当我运行该函数时,它应该是这样的:

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()

2 个答案:

答案 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():