Maison > développement back-end > Tutoriel Python > Comment puis-je implémenter une entrée utilisateur limitée dans le temps en Python ?

Comment puis-je implémenter une entrée utilisateur limitée dans le temps en Python ?

Barbara Streisand
Libérer: 2024-11-27 01:49:11
original
470 Les gens l'ont consulté

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

Entrée utilisateur limitée dans le temps en Python

Lorsque vous sollicitez une entrée utilisateur avec la fonction d'entrée, vous souhaiterez peut-être limiter le temps dont dispose l'utilisateur pour répondre. Cela vous permet de gérer gracieusement les délais d'attente et de fournir des commentaires appropriés.

Utiliser une entrée limitée dans le temps

Pour mettre en œuvre une entrée limitée dans le temps, envisagez les approches suivantes :

Approche des threads bloquants (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
Copier après la connexion

Approche de thread non bloquante (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()
Copier après la connexion

Approche de gestion du signal (de type Unix systèmes)

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
Copier après la connexion

Choisissez l'approche qui convient le mieux à votre système d'exploitation et à votre blocage exigences.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal