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
-
La precisión de
time()
A. Escriba un programatiempo_1.py
utilizando un buclefor
que imprimatime()
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).
-
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 input( "Presione Enter y presiónelo nuevamente 3 segundos después." ) antes = time() input( "Esperando..." ) despues = time() differencia = despues - antes print( "De hecho, hubo", differencia, "segundos entre preciones" )
-
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 instruccionesinput()
. Mantener seguimiento del tiempo transcurrido. Después de la tercera pulsación, 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
-
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.