Tiempo - johncroth/pythonEd2024 GitHub Wiki

Cada computadora que se me ocurre tiene un reloj en su centro. (En realidad, varios relojes.) En Python, podemos usar el modulo time (del inglés palabra para `tiempo') para ciertas cosas relacionadas con el tiempo.

Primero, la función sleep(x) ("dormir") le dice a la computadora que haga una pausa por x segundos; x puede ser una valor decimal mas que cero. Guarde este programa en tiempo_a.py y ejecútelo.

print( "Esperate..." )
sleep( 3 )
print( "Ahorita..." )
sleep( .5 )
print( "Listo, gracias." )

Vaya, eso no funciona, porque la función sleep pertenece a un "módulo" (paquete de código) se llama time que Python no usa a menos que se lo indiquemos. Necesitoms poner esta linea en la cima:

from time import sleep

Ahora, ejecútelo y observe la salida.

Segundo, la función time() devuelve un número que representa cuántos segundos han transcurrido. Guarde este programa en tiempo_b.py y ejecútelo.

from time import time, sleep

antes = time()
print( "Antes, la hora era", antes )
sleep( 2 )
despues = time()
print( "Despues, la hora era", despues )
diferencia = despues - antes
print( diferencia, "segundos transcurridos" )

El valor devuelto por time() es el número de segundos transcurridos desde un cierto punto de tiempo en el pasado, por un reloj en la computadora. Entonces no es muy confiable. Sin embargo, las diferencias en este valor en dos puntos de su programa tienen sentidos.

Por eso, el programa llama a la función time() dos veces, (en la líneas 3 y 6), dormiendo en el medio. Guarda los valores por time() en cada punto, y calcula e imprime la diferencia.

Ejercicios

  1. La precisión de time() A. Escriba un programa tiempo_1.py utilizando un bucle for que imprima time() 10 veces seguidas, sin pausas entre ellas. ¿El cambio de valor cada vez? ¿Por qué no?

    B. Agrega un sleep(.01) dentro del bucle. ¿Exactamente 10 milisegundos separan los diferentes tiempos?

    C. Repita con sleep(.1) en su lugar. ¿Están siempre separados por 100 milisegundos?

    D. Finalmente, igualmente con sleep(1).

  2. El siguiente programa le pide al usuario que presione "Entrar" y luego presione "Entrar" nuevamente 3 segundos después, e imprime averiguar el tiempo real transcurrido. Cópialo y guárdalo en tiempo_2.py, corrige cualquier error y ejecútalo varias veces.

    from time import time
    antes = time()
    input( "Presione Enter y presiónelo nuevamente 3 segundos después." )
    input( "Esperando..." )
    despues = time()
    differencia = despues - antes
    print( "De hecho, hubo", differencia, "segundos entre preciones" )
    
  3. Escribe un juego realmente simple, en el archivo tiempo_3.py. Pídele al usuario que presione enter 3 veces en un tempo constante, usando 3 instrucciones input(). Mantener seguimiento del tiempo transcurrido. Después de la tercera pulsación, y muestre cuánto tiempo tardó el usuario entre cada par de pulsaciones. Vea el resultado a continuación para ver un ejemplo.

    Toca Enter 3 veces en tiempo constanta
    Otra vez
    Una vez mas
    0.8378393650054932 vs 0.7104668617248535
    
  4. A menudo es necesario recordar a las máquinas que hagan las cosas según un horario. Python es cada vez más popular como lenguaje para "microcontroladores" (computadoras para uso en pequeños dispositivos) que realizan este proceso flexible.

    A. Copia este programa a tiempo_4.py y verifica que imprime 10 mensajes con un retraso de 1 segundo, approximatmente.

    from time import sleep, time
    
    empezo = time()
    for i in range(0, 10):
        print( "Parpadea la luz número 1:", time() - empezo)
        sleep( 1 )
    

    B. Cambia el programa para que también imprima "Parpadea la luz número 2" (con la tiempo transcurrido) cada medio segundo, como, así como los mensajes anteriores cada segundo.

    C. Cambie el programa para que el parpadeo de la luz número 2 no ocurra simultáneamente con el parpadeo de la luz 1, pero está escalonado por lo que ocurre 1/4 y 3/4 de segundo después del parpadeo de la luz numero 1.

    D. Cambia el programa para que imprima "Parpadea la luz número 3" cinco veces por segundo, así como todos los mensajes anteriores con su tiempo anterior.