Maison >développement back-end >Tutoriel Python >Comment puis-je implémenter un délai d'attente pour la saisie utilisateur en Python ?

Comment puis-je implémenter un délai d'attente pour la saisie utilisateur en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-15 13:30:02460parcourir

How Can I Implement a Timeout for User Input in Python?

Délai d'expiration pour la saisie utilisateur en Python

En Python, la fonction raw_input() invite l'utilisateur à entrer, mais elle attend indéfiniment jusqu'à ce que l'utilisateur entre quelque chose. Pour les situations où vous devez imposer une limite de temps à la saisie de l'utilisateur, une solution est disponible en utilisant le module de threading.

La fonction raw_input_with_timeout(), telle que proposée par un utilisateur, prend deux arguments : prompt (le texte affiché à l'utilisateur) et le délai d'attente (le délai en secondes). Il démarre un thread de minuterie qui interrompra le thread principal après le délai d'attente spécifié.

Voici une version améliorée du code :

import threading

def raw_input_with_timeout(prompt, timeout=30.0):
    print(prompt, end=' ')    
    timer = threading.Timer(timeout, thread.interrupt_main)
    astring = None
    try:
        timer.start()
        astring = input(prompt)
    except KeyboardInterrupt:
        pass
    timer.cancel()
    return astring

Si l'utilisateur saisit une entrée avant le délai d'expiration, l'entrée est renvoyé sous forme de chaîne. Si le délai d'attente est atteint, Aucun est renvoyé pour indiquer que l'utilisateur n'a pas fourni de saisie dans le délai spécifié.

Notez que cette solution suppose que l'utilisateur ne tape pas très lentement. Si vous devez tenir compte d'une saisie lente, vous pouvez recalculer finishat (l'heure à laquelle le délai d'attente se produit) après chaque saisie de caractère.

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