HOLA!
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Estoy creando un pequeño programa en Python! Pero, me surgió una gran pregunta...
¿Cómo puedo dar un tiempo límite para que el usuario ingrese un dato?No se si me explico con la pregunta... En mi código, me gustaría que el usuario tenga que ingresar un dato... Pero, si el usuario no ingresó el dato después de 5 segundos, Mueste un mensaje que diga "Perdiste!".
DATOS A TENER EN CUENTA :*SOY NOVATO XD
*TRABAJO EN PYTHON 3.6
*MI SISTEMA OPERATIVO ES WINDOWS 10
GRACIAS POR LEER MI MENSAJE!Espero su respuesta!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------New Moments, New Life!
lamentablemente no tiene respuesta simple... yo te recomendaría hacerlo como un hilo aparte o usar señales...
no se si señales funcione bien en windows, pero aquí un codigo simple
import signal
def interrupcion(signum, frame):
print("perdiste")
print("presiona enter para continuar")
signal.signal(signal.SIGALRM, interrupcion) #cargamos la interrupción
def leerEntrada(texto, tiempo): #definimos nuestro propio input
def interno(texto): #con una funcion contenida >:)
return input(texto)
signal.alarm(tiempo) #activamos la alarma
retorno = interno(texto) #esperamos el retorno
signal.alarm(0) #desactivamos la alarma
return retorno #retornamos
valor = leerEntrada("Tienes 5 segundos para responder: ", 5) #texto, tiempo
print ("valor: ", valor)
hace ya mucho tiempo mostré una implementación de como lo resolvía.
#-*- coding:utf-8 -*-
import msvcrt
import time
def input_tiempo(aviso = ">>>",duracion=5):
global nombre
nombre=""
print (aviso)
finaliza = time.time() + duracion
while time.time()< finaliza:
if msvcrt.kbhit():
letra= msvcrt.getche().decode('ASCII')
if letra == "\r":
break
else:
nombre+= letra
q=input_tiempo("Escribe tu nombre: ")
if nombre != "":
print("\nHola ¡¡ {} !!".format(nombre))
else:
print("Perdiste")
input()
la solucion ideal es la de tincopasan, aunque hay una cosita que no me gusta
linea 7, declaras nombre como global, pero esto parece inapropiado a primera vista, no sería mejor retornarlo?
Gracias por sus respuestas!
Voy a intentarlo!