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
Barbara Streisandoriginal
2024-11-27 01:49:11444parcourir

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

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()

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

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:
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