Python:如何使用list作为用户输入的选择源?

时间:2015-02-10 06:07:01

标签: python input multiple-choice

任何人都可以查看此代码并告诉我出了什么问题吗?

input_list = ["One", "Two", "Three"]
P1 = input("Select the input: ", input_list[0], input_list[1], input_list[2])
print (P1)

2 个答案:

答案 0 :(得分:12)

使用python的raw_input,无法向用户提供可供选择的预选列表。使用raw_input我们收集原始字符串。

更新:一个不错的解决方案是使用新的选择库:https://github.com/wong2/pick它提供了一个小的curses接口,可以从给定的列表中选择我们的选择。通过pip install pick获取。 (更新:多选:是)

更新2 :还有另一个python库! https://curses-menu.readthedocs.org/en/latest/usage.html#getting-a-selection(没有多选)

为此目的,有一个很小且没有维护的库,picker(多选:是)。

我想到的最简单的解决方案是使用shell工具:

  • dialog是Debian用于在控制台中呈现UI的发行版,
  • selecta是shell的模糊文本选择器,因此它完全符合我们的需求,除了它是一个ruby工具,
  • zenity(和yad-dialog)使构建简单窗口变得非常容易(我们退出终端)。我可以用这个显示一个列表:

    zenity --list --text="a title" --column="first column" "first choice" "second choice"
    

    我们也可以选择多种选择。

  • 如果我们退出控制台,我们可以使用更完整的GUI工具,如gooey(它将带有命令行参数的python脚本转换为GUI),甚至是Flexxx and others,但这是另一项工作。

答案 1 :(得分:0)

查看input函数的文档:https://docs.python.org/2/library/functions.html#input

input提示一个提示,并评估用户输入的数据,就像它是一个Python表达式一样。如果您只想收集用户输入的数据,请改用raw_input。您需要实现自定义逻辑,以确保用户的输入与列表中的内容匹配。