Heim > Backend-Entwicklung > Python-Tutorial > Wie implementiert man ein Zeitlimit für Benutzereingaben in Python?

Wie implementiert man ein Zeitlimit für Benutzereingaben in Python?

Patricia Arquette
Freigeben: 2024-11-16 17:42:03
Original
972 Leute haben es durchsucht

How to Implement a Time Limit for User Input in Python?

So implementieren Sie ein Zeitlimit für Benutzereingaben in Python

Bei der Verwendung der Funktion raw_input() können Sie auf Situationen stoßen, in denen Sie dies wünschen um die Eingabe nach einer vordefinierten Dauer zu beenden. Glücklicherweise bietet Python mehrere Lösungen, um dieser Anforderung gerecht zu werden.

Nur ​​Unix-Methode:

@jers Vorschlag nutzt die signal.alarm-Funktion, die nur unter Unix verfügbar ist Systeme. Diese Funktion löst eine KeyboardInterrupt-Ausnahme aus, wenn das angegebene Zeitlimit erreicht ist. Der folgende Code veranschaulicht diesen Ansatz:

import signal

def raw_input_with_timeout(prompt, timeout):
    signal.alarm(timeout)
    try:
        return input(prompt)
    except KeyboardInterrupt:
        return None
    finally:
        signal.alarm(0)  # Reset alarm to avoid interference
Nach dem Login kopieren

Plattformübergreifende und Windows-spezifische Methoden:

Für plattformübergreifende oder Windows-spezifische Lösungen sollten Sie die Verwendung von in Betracht ziehen threading.Timer-Klasse zusammen mit thread.interrupt_main. Dieser Ansatz sendet einen KeyboardInterrupt von einem Timer-Thread an den Hauptthread. Der folgende Code veranschaulicht diese Methode:

import threading

def raw_input_with_timeout(prompt, timeout):
    print(prompt, end=' ')
    timer = threading.Timer(timeout, thread.interrupt_main)
    result = None
    try:
        timer.start()
        result = input(prompt)
    except KeyboardInterrupt:
        pass
    timer.cancel()
    return result
Nach dem Login kopieren

Windows-spezifische Methode (ungetestet):

In Windows-Umgebungen kann msvcrt verwendet werden, um Zeitüberschreitungen zu erreichen. Dieser Ansatz beinhaltet das Abfragen von Tastendrücken innerhalb einer engen Schleife und das Sammeln von Eingaben, bis eine maximale Zeit erreicht ist oder ein Zeilenumbruchzeichen erkannt wird.

import msvcrt
import time

def raw_input_with_timeout(prompt, timeout):
    print(prompt, end=' ')
    finishat = time.time() + timeout
    result = []
    while True:
        if msvcrt.kbhit():
            result.append(msvcrt.getche())
            if result[-1] == '\r':
                return ''.join(result)
            time.sleep(0.1)
        else:
            if time.time() > finishat:
                return None
Nach dem Login kopieren

Anpassbares Verhalten:

Falls ein anderer Timeout-Rückgabewert als None gewünscht wird, ersetzen Sie einfach die return None-Anweisung in den obigen Codefragmenten. Darüber hinaus können durch Anpassen des Finishs nach jedem Tastendruck Zeitüberschreitungen basierend auf der Eingabegeschwindigkeit angepasst werden.

Das obige ist der detaillierte Inhalt vonWie implementiert man ein Zeitlimit für Benutzereingaben in Python?. 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