Tiempo y Python!

Iniciado por Thiamatt, 30 Agosto 2017, 01:17 AM

0 Miembros y 1 Visitante están viendo este tema.

Thiamatt

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!



engel lex

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
Código (python) [Seleccionar]
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)


El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tincopasan

hace ya mucho tiempo mostré una implementación de como lo resolvía.
Código (python) [Seleccionar]

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


engel lex

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?


El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Thiamatt

Gracias por sus respuestas!
Voy a intentarlo!