web-dev-qa-db-ja.com

Python:リストをユーザー入力の選択ソースとして使用するにはどうすればよいですか?

誰かがこのコードをチェックして、何が問題なのかを教えてもらえますか?

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

Pythonのraw_inputでは、事前に選択されたリストをユーザーが選択できるようにすることはできません。 raw_inputでは、生の文字列を収集します。

update:いい解決策は、新しいpickライブラリを使用することです https://github.com/wong2/pick It与えられたリストから選択するための小さなcursesインターフェースを提供します。 pip install pickで入手してください。 (更新:複数選択:はい)

update 2:さらに別のpython lib! https://curses-menu.readthedocs。 org/en/latest/usage.html#getting-a-selection (複数選択なし)

そのために作られた、小さくてメンテナンスされていないライブラリがあります picker (複数選択:はい)。

私が考えている最も簡単な解決策は、シェルツールを使用することです。

  • dialogは、コンソールにUIを表示するためにDebianのようなディストリビューションが使用するものです。
  • selecta はシェルのファジーテキストセレクターであるため、Rubyツールである場合を除き、
  • zenity(および yad-dialog )を使用すると、単純なウィンドウを簡単に作成できます(ターミナルを終了します)。これでリストを表示できます:

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

    複数の選択肢を選択することもできます。

  • コンソールを終了する場合、gooey(pythonスクリプトとコマンドライン引数をGUIに変換))またはFlexxx およびその他 などのより完全なGUIツールを使用できます。 、しかしそれは別の仕事です。
14
Ehvince

input関数のドキュメントをご覧ください: https://docs.python.org/2/library/functions.html#input

inputはプロンプトを表示し、ユーザーが入力したデータをPython式であるかのように評価します。ユーザーが入力したデータを収集するだけの場合は、raw_input代わりに、カスタムロジックを実装して、ユーザーの入力がリスト内の何かと一致することを確認する必要があります。

0
badAPI