ホームページ > バックエンド開発 > Python チュートリアル > Python で時間制限のあるユーザー入力を実装するにはどうすればよいですか?

Python で時間制限のあるユーザー入力を実装するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-27 01:49:11
オリジナル
368 人が閲覧しました

How Can I Implement Time-Limited User Input in Python?

Python での時間制限のあるユーザー入力

input 関数を使用してユーザー入力を求める場合、ユーザーが入力できる時間を制限したい場合があります。応答すること。これにより、タイムアウトを適切に処理し、適切なフィードバックを提供できるようになります。

時間制限付き入力の使用

時間制限付き入力を実装するには、次のアプローチを検討してください。

スレッドをブロックするアプローチ (Python) 2/3)

import threading

timeout = 10  # In seconds
t = threading.Timer(timeout, lambda: print('Sorry, times up.'))
t.start()

prompt = "You have {} seconds to choose the correct answer...\n".format(timeout)
answer = input(prompt)
t.cancel()  # Stop the timer if the user provides a response
ログイン後にコピー

ノンブロッキング スレッド アプローチ (Python 3)

import sys
import msvcrt  # For Windows
import time  # For Unix

def input_with_timeout(prompt, timeout, timer=time.monotonic):
    sys.stdout.write(prompt)
    sys.stdout.flush()
    endtime = timer() + timeout
    result = []

    while timer() < endtime:
        if msvcrt.kbhit():  # For Windows
            # Handle keyboard input
        else:  # For Unix
            ready, _, _ = select.select([sys.stdin], [], [], timeout)
            if ready:
                return sys.stdin.readline().rstrip('\n')

    raise TimeoutExpired()
ログイン後にコピー

シグナル処理アプローチ (Unix ライク)システム)

import signal

def alarm_handler(signum, frame):
    raise TimeoutExpired()

def input_with_timeout(prompt, timeout):
    signal.signal(signal.SIGALRM, alarm_handler)
    signal.alarm(timeout)

    try:
        return input(prompt)
    finally:
        signal.alarm(0)  # Cancel the alarm
ログイン後にコピー

を選択してくださいオペレーティング システムとブロック要件に最適なアプローチを選択してください。

以上がPython で時間制限のあるユーザー入力を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート