Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich zeitlich begrenzte Benutzereingaben in Python implementieren?

Wie kann ich zeitlich begrenzte Benutzereingaben in Python implementieren?

Barbara Streisand
Freigeben: 2024-11-27 01:49:11
Original
367 Leute haben es durchsucht

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

Zeitlich begrenzte Benutzereingaben in Python

Wenn Sie Benutzereingaben mit der Eingabefunktion einholen, möchten Sie möglicherweise die Zeit begrenzen, die dem Benutzer zur Verfügung steht antworten. Dadurch können Sie Zeitüberschreitungen elegant bewältigen und entsprechendes Feedback geben.

Verwenden einer zeitlich begrenzten Eingabe

Um eine zeitlich begrenzte Eingabe zu implementieren, sollten Sie die folgenden Ansätze in Betracht ziehen:

Blockierender Thread-Ansatz (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
Nach dem Login kopieren

Nicht blockierender Thread-Ansatz (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()
Nach dem Login kopieren

Signalverarbeitungsansatz (Unix-ähnlich Systeme)

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
Nach dem Login kopieren

Wählen Sie den Ansatz, der am besten zu Ihrem Betriebssystem passt Sperranforderungen.

Das obige ist der detaillierte Inhalt vonWie kann ich zeitlich begrenzte Benutzereingaben in Python implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage