elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Aporte python: casi emular input() pero con tiempo de espera
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Aporte python: casi emular input() pero con tiempo de espera  (Leído 3,265 veces)
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Aporte python: casi emular input() pero con tiempo de espera
« en: 2 Agosto 2016, 03:31 am »

Muchas veces me preguntan y veo que preguntan como continuar si hay un input() y el usuario no presiona ENTER,lo más correcto desde mi perspectiva es usar threads y semaforos, pero cuando digo eso la respuesta más común es: "¿pódes hacer el código?, no manejo threads", pues bien, cualquiera puede hacer el código, el tema es que la mayoría solo copia y pega sin aprender nada, entonces me parece mejor hacer un código que haga algo similar y muy fácil, ya que usa lo más común de python.
Otra cosa, solo trabajo sobre windows y python 3.x por lo que el funcionamiento en otros S.O o versiones anteriores de python (2.x) no me interesan ni probar.
Bueno así usaría una función para casi emular input y que se corte con tiempo, por supuesto hay muchas más formas de hacerlo, pero quizá este sea un puntapie de inicio para sus códigos(que espero posteen)
Está incompleto por supuesto, pero si funcional en lo simple.
Claro que todos sabemos que esto es por consola y que si fuese con tkinter sería mucho más simple y mejor.
Código
  1. #-*- coding:utf-8 -*-
  2. import msvcrt
  3. import time
  4. def input_tiempo(aviso = ">>>",duracion=10): #aviso es el prompt y duración cuanto hay que esperar
  5.    global nombre                              
  6.    nombre=""
  7.    print (aviso)    
  8.    finaliza = time.time() + duracion        #cuando terminar de esperar
  9.    while time.time()< finaliza:            
  10.        if msvcrt.kbhit():                   #msvcrt está recontra documentado y hay cientos de ejemplos    
  11.            letra= msvcrt.getche().decode('ASCII')
  12.            if letra == "\r":                 #si el usuario presiona enter sigue normal    
  13.                break
  14.            else:
  15.                nombre+= letra
  16. #forma de uso          
  17. q=input_tiempo("Escribe tu nombre: ")  #pongo lo que quiera y si no pongo duración es la que viene x defecto
  18. if nombre != "":
  19.    print("\nHola ¡¡ {} !!".format(nombre))
  20. else:
  21.    print("Hola desconocido")    
  22.  
Saludos   


« Última modificación: 3 Agosto 2016, 16:39 pm por tincopasan » En línea

Poyoncio

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: Aporte python: casi emular input() pero con tiempo de espera
« Respuesta #1 en: 2 Agosto 2016, 23:06 pm »

Vaya vaya, es muy ingenioso el codigo que has hecho, aunque no acabo de entender eso de un input al que no le dan enter, si me pudieras explicar mejor alguna aplicacion que se le podria dar igual me animo yo tambien a intentar algo parecido  ;D


En línea

Curso de ensamblador desde cero
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Aporte python: casi emular input() pero con tiempo de espera
« Respuesta #2 en: 3 Agosto 2016, 10:28 am »

no conozco todas las aplicaciones que se le podría dar, porque eso depende de cada programador, pero en mi caso lo uso en 1) juegos conversacionales donde por ejemplo muestro: ¿que cable cortar? y si la respuesta es errada o paso el tiempo muestro: "perdiste la bomba explotó" o sea en juegos con tomas de decisiones por opciones y tiempo
2) test de conocimientos y velocidad de tipeo, muestro:"como se dice 'uno' en inglés" y debe escribir bien y rápido, sino es un punto menos y ¿por qué tiempo en cada pregunta en vez de un tiempo total? fácil por que no lleva lo mismo escribir "one" que "last week i saw movies" y evalúo por respuesta.
eso básicamente uso yo, pero obviamente siempre lo voy complicando en el código.
Claro que vos pódes usarlo en otra cosa que se ocurra! y postearlo de paso.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Aporte python: casi emular input() pero con tiempo de espera
« Respuesta #3 en: 3 Agosto 2016, 16:27 pm »

Yo si que le veo utilidad, me parece una idea muy buena @Tincopasan, un snippet muy practico. Es lo mismo que el típico mensaje de texto (o messagebox) con tiempo de retraso, también con sus diversas utilidades.
Lo único que yo creo que le faltaría a tu código para ser todavía más perfecto, sería un texto advirtiendo del tiempo que falta para terminar, pero bueno, se entiende que el código que has proporcionado es solo un ejemplo didáctico.

PD: Me han entrado ganas de replicar esta funcionalidad en .NET, ¡te copio la idea! :P

Saludos!
« Última modificación: 3 Agosto 2016, 16:34 pm por Eleкtro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Kitar el tiempo de Espera
Sugerencias y dudas sobre el Foro
templar 9 3,223 Último mensaje 24 Diciembre 2004, 04:51 am
por el-brujo
Tiempo de espera
Programación Visual Basic
Kizar 3 2,263 Último mensaje 16 Octubre 2005, 20:36 pm
por yeikos
un tiempo de espera
Programación Visual Basic
SheKeL_C$ 1 1,779 Último mensaje 15 Febrero 2006, 00:25 am
por EstoyBaneado
Bypass tiempo de espera de Megaupload
Programación Visual Basic
XcryptOR 6 4,774 Último mensaje 14 Julio 2009, 17:47 pm
por ^_^
(Python 3.5) 2 veces un input
Scripting
BigKaz 3 2,003 Último mensaje 14 Diciembre 2016, 04:13 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines