ホームページ >バックエンド開発 >Python チュートリアル >時間制限のあるユーザーのキーボード入力をエラーなく Python で実装するにはどうすればよいですか?
時間制限のある応答によるユーザー キーボード入力
ユーザーに入力を求める場合、プログラムが中断されるのを防ぐためにタイムアウトを設定すると役立つことがよくあります。無期限に応答を待つ必要がなくなります。ただし、参照されているもの (http://mail.python.org/pipermail/python-list/2006- January/533215.html) など、オンライン フォーラムで提案されているアプローチを使用してこの機能を実装しようとすると、問題が発生する可能性があります。
具体的には、sys.input.readline または timer.sleep を使用してタイムアウトを実装しようとすると、多くの場合次のような結果になります。 error:
<type 'exceptions.TypeError'>: [raw_]input expected at most 1 arguments, got 2
このエラーは、入力関数が最大 1 つの引数を予期しているにもかかわらず、2 つの引数が渡されていることを示します。
強化されたソリューション
この問題に対処するためのより堅牢なアプローチには、タイムアウトのある入力を処理するためのより移植性が高く効率的な方法を提供する select モジュールの使用が含まれます。次のコードは、このアプローチを示しています。
import sys, select print("You have 10 seconds to respond!") # Set a timeout of 10 seconds timeout = 10 # Create a list of input sources to monitor (in this case, only standard input) inputs = [sys.stdin] # Use select.select to monitor for input within the specified timeout readable, _, _ = select.select(inputs, [], [], timeout) # Check if any input was received within the timeout if readable: # Read and process the input input_str = sys.stdin.readline().strip() print("You said:", input_str) else: # No input was received within the timeout print("You said nothing!")
このソリューションでは、select.select 関数を使用して、指定されたタイムアウトで標準入力からの入力を監視します。タイムアウト内に入力が受信された場合、それは処理されます。それ以外の場合、プログラムは入力が受信されなかったことを示すメッセージを出力します。
select モジュールを使用することで、このアプローチは以前の試行で発生した TypeError を回避し、Python で時間制限のあるユーザー入力を実装するためのより信頼性の高い方法を提供します。 .
以上が時間制限のあるユーザーのキーボード入力をエラーなく Python で実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。