Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Thiamatt en 30 Agosto 2017, 01:17 AM

Título: Tiempo y Python!
Publicado por: Thiamatt en 30 Agosto 2017, 01:17 AM
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!


Título: Re: Tiempo y Python!
Publicado por: engel lex en 30 Agosto 2017, 02:05 AM
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)


Título: Re: Tiempo y Python!
Publicado por: tincopasan en 30 Agosto 2017, 02:16 AM
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()

Título: Re: Tiempo y Python!
Publicado por: engel lex en 30 Agosto 2017, 02:37 AM
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?


Título: Re: Tiempo y Python!
Publicado por: Thiamatt en 30 Agosto 2017, 03:38 AM
Gracias por sus respuestas!
Voy a intentarlo!