[Copia y Pega y Funciona] ¡Creemos una App de Temporizador con Python! (Usando el módulo time)
"¿Por dónde empiezo a programar?" "Intento leer libros, pero me desanimo con tantos errores..."
Hace solo unos meses, yo me sentía exactamente igual. Empecé desde cero, y a base de prueba y error con la ayuda de la IA, ahora he logrado lanzar dos sitios web por mi cuenta.
En este artículo, mi principal objetivo es que tú, como compañero principiante, experimentes la alegría de hacer algo que "funciona" desde la misma perspectiva. Esta vez, usaremos el "mago del tiempo" incorporado en Python, el módulo `time`, para crear una aplicación de temporizador y alarma sorprendentemente simple.
¡Dejemos la teoría complicada para después! Primero, ¡simplemente copia, pega y disfruta del momento en que tu ordenador se convierte en un temporizador!
Paso 1: ¡Pruébalo Primero! Un Programa Súper Simple que Solo Espera 3 Segundos
Ver para creer. Primero, ejecutemos el temporizador más simple del mundo, que solo le pide al ordenador que "espere 3 segundos". Copia el siguiente código y ejecútalo en tu entorno de Python.
# El hechizo mágico para usar la "magia del tiempo"
import time
print("Iniciando el temporizador.")
# Pausa la ejecución del programa durante 3 segundos
time.sleep(3)
print("¡Han pasado 3 segundos! Buen trabajo.")
Al ejecutarlo, debería aparecer "Iniciando el temporizador." y, tras una breve pausa, se mostrará "¡Han pasado 3 segundos!". ¡Eso es todo! Esta es la base fundamental de un temporizador.
- `import time`: Este es un conjuro para decirle a Python: "¡Voy a usar funciones de tiempo ahora!". Carga una caja de herramientas llamada `time` que está llena de varias magias (funciones) relacionadas con el tiempo.
- `time.sleep(3)`: Este es el corazón del temporizador. Es un hechizo mágico llamado `sleep` de la caja de herramientas `time`, que detiene temporalmente la ejecución del programa durante el número de segundos especificado entre paréntesis.
¿Qué te parece? ¿No es mucho más fácil de lo que esperabas? Esta es la experiencia de hacer que algo "funcione". Este pequeño éxito es el mejor combustible para seguir adelante en tu viaje de programación.
Paso 2: ¡Hazlo Tuyo! Configuremos los Segundos Libremente
Un temporizador fijo de 3 segundos está bien, pero sería genial poder establecer el tiempo que quieras para cosas como cocinar o estudiar. A continuación, modifiquemos el programa para que pregunte "¿Cuántos segundos debo esperar?" cada vez que se ejecuta.
Aquí es donde entra en juego el hechizo mágico `input()`, que acepta entradas de texto del usuario.
import time
# Recibir la entrada del usuario con input()
input_seconds_str = input("¿En cuántos segundos debo notificarte? Por favor, introduce un número: ")
# [¡PUNTO IMPORTANTE!] Convertir la "cadena" de entrada en un "entero"
seconds = int(input_seconds_str)
print(f"Temporizador configurado para {seconds} segundos.")
time.sleep(seconds)
print(f"¡Han pasado {seconds} segundos! ¡Se acabó el tiempo!")
Cuando ejecutes esto, el programa se detendrá y un cursor comenzará a parpadear. Intenta escribir el número de segundos que desees (por ejemplo, `10`) y presiona Enter. El mensaje aparecerá después de esperar el número de segundos que ingresaste.
⚠️ La Trampa en la que Cae Todo Principiante: `input()` Siempre es una "Cadena"
Permíteme compartir un punto crucial en el que tropecé al principio. La regla es que cualquier cosa recibida por `input()`, incluso si escribes un número, se trata como una "cadena" (string).
`time.sleep()` solo acepta un número de segundos. Si intentas pasarle la "cadena" `"10"`, se enfadará y lanzará un error, diciendo: "¡Eso no es un número!".
Es por eso que la línea `seconds = int(input_seconds_str)` es necesaria. Este es el proceso de transformar la cadena en un "entero" (integer) con el que el ordenador puede trabajar, envolviéndola en el hechizo `int()`. Esta "conversión de tipo" es un concepto fundamental y vital que aparece en todos los aspectos de la programación, ¡así que por favor recuérdalo!
Paso 3: ¡Haz que se Vea Genial! Implementando una Cuenta Regresiva
¿No te pones ansioso preguntándote si el temporizador realmente está funcionando mientras está activo? Agreguemos una función de cuenta regresiva que muestre el tiempo restante para que sepas "¿cuántos segundos quedan?".
Aquí usaremos la magia de la "repetición", el bucle `for`. También usaremos un pequeño truco para mantener la visualización en una sola línea para que solo los números parezcan actualizarse.
import time
seconds = 10 # Fijo en 10 segundos para mayor claridad
# Bucle desde 10 hasta 1, decrementando en 1
for i in range(seconds, 0, -1):
# Muestra de forma ordenada con una f-string. ¡end="\r" es el hechizo mágico!
print(f"Tiempo restante: {i} seg", end="\r")
# Espera 1 segundo
time.sleep(1)
# Mensaje después de que termine la cuenta regresiva
# La clave es agregar espacios al final para limpiar la línea anterior
print("¡Se acabó el tiempo! ")
Adelante, ejecútalo. ¿Qué tal? Deberías haber visto los números disminuir `10, 9, 8...` en el mismo lugar en tu terminal. ¡Parece una aplicación de temporizador real, verdad?
- `for i in range(seconds, 0, -1):`: Usando `range(inicio, fin, paso)`, creamos un bucle que "comienza desde `seconds` (10), hasta llegar a 1 (0 no está incluido), mientras decrementa en -1". El conteo de cada iteración (10, 9, 8...) se almacena automáticamente en la variable `i`.
- `print(..., end="\r")`: Esta es nuestra técnica clave esta vez. Normalmente, `print` agrega una nueva línea después de mostrar texto, pero agregar `end="\r"` cambia su comportamiento a "devolver el cursor al principio de la línea sin una nueva línea". Esto hace que el siguiente `print` sobrescriba la visualización anterior, haciendo que parezca que solo los números están cambiando.
Paso 4: ¡Finalmente Completo! Un Temporizador Real que Emite un Sonido de Alarma
Estamos en el paso final. Agreguemos una función de alarma que no solo muestre un mensaje cuando se acabe el tiempo, sino que también te notifique con un "sonido" real.
No se necesitan bibliotecas especiales. La mayoría de los ordenadores (y sus terminales) tienen una especie de función oculta que reproduce un sonido de "bip" cuando se imprime un "carácter especial" específico. Ese carácter es `\a`.
¡Aquí está la versión final del código, que incorpora todas las características hasta ahora, además del manejo de errores para cuando el usuario ingresa algo que no es un número!
# Importar el módulo time
import time
# Usar un bloque try...except para envolver el código que podría causar un error
try:
# Obtener el tiempo de espera en segundos del usuario
input_seconds_str = input("¿En cuántos segundos debe sonar la alarma? Por favor, introduce un número: ")
# Convertir la cadena de entrada a un entero (tipo int)
seconds = int(input_seconds_str)
print(f"Iniciando una cuenta regresiva de {seconds} segundos.")
# Bucle desde el número de segundos especificado hasta 1
for i in range(seconds, 0, -1):
# Usar una f-string para una visualización limpia del tiempo restante
# end="\r" hace que la siguiente impresión sobrescriba la línea actual
print(f"Tiempo restante: {i} seg ", end="\r")
# Esperar 1 segundo
time.sleep(1)
# Cuando el bucle termina (se acaba el tiempo), muestra un mensaje
# \a es el carácter de alerta de la terminal que reproduce un sonido de campana
print("¡Se acabó el tiempo! ¡La alarma está sonando! \a")
except ValueError:
# Manejar el caso en que se ingresa una entrada no numérica (int() falla)
print("Error: Por favor, introduce un número válido.")
except KeyboardInterrupt:
# Manejar el caso en que el usuario interrumpe el programa con Ctrl+C
print("\nTemporizador interrumpido.")
Con esto, tu ordenador ahora funciona como una aplicación completa de temporizador y alarma. También es un poco más inteligente, ya que mostrará correctamente un mensaje de error y saldrá si ingresas caracteres no numéricos (como `abc`).
Nota: Es posible que el sonido de bip de `\a` no se reproduzca dependiendo de tu sistema operativo o la configuración de tu terminal. Incluso si no escuchas un sonido, ten la seguridad de que el programa funciona correctamente.
Conclusión: ¡Un Pequeño "Funcionó!" es un Gran Poder para el Futuro
¡Buen trabajo! En este artículo, has experimentado cómo puedes crear una práctica aplicación de temporizador simplemente combinando las características básicas del módulo `time` de Python.
- Hacer que el programa espere con `time.sleep()`
- Recibir instrucciones del usuario con `input()`
- Convertir cadenas a números con `int()` (¡Súper importante!)
- Repetir procesos con un bucle `for`
- Hacer que la visualización se vea genial con `print(end="\r")`
- Reproducir un sonido de alarma con `\a`
- Prepararse para errores con `try...except`
Cada característica es simple por sí sola, pero la diversión de la programación es que al combinarlas, puedes crear una herramienta que sea genuinamente útil para alguien. El pequeño éxito que experimentaste hoy -"¡Funcionó con un copia y pega!" o "¡Pude modificarlo yo mismo!"- será tu mayor motivación a medida que avances para crear cosas más complejas e interesantes.
¡Siéntete libre de usar este código como base para jugar con él, como modificarlo para que acepte la entrada en minutos o intentar construir un temporizador Pomodoro (25 minutos de trabajo + 5 minutos de descanso)!
[Extra] HTML para Experimentar Todo el Código de Este Artículo
Puedes copiar el código final de Python introducido en este artículo desde el bloque de código a continuación, guardarlo en tu PC con un nombre como `timer.py`, y ejecutarlo en cualquier momento para probarlo. ¡Adelante, ejecútalo en tu ordenador!
<!-- Guardar como timer.py y ejecutarlo -->
# Importar el módulo time
import time
# Usar un bloque try...except para envolver el código que podría causar un error
try:
# Obtener el tiempo de espera en segundos del usuario
input_seconds_str = input("¿En cuántos segundos debe sonar la alarma? Por favor, introduce un número: ")
# Convertir la cadena de entrada a un entero (tipo int)
seconds = int(input_seconds_str)
print(f"Iniciando una cuenta regresiva de {seconds} segundos.")
# Bucle desde el número de segundos especificado hasta 1
for i in range(seconds, 0, -1):
# Usar una f-string para una visualización limpia del tiempo restante
# end="\r" hace que la siguiente impresión sobrescriba la línea actual
print(f"Tiempo restante: {i} seg ", end="\r")
# Esperar 1 segundo
time.sleep(1)
# Cuando el bucle termina (se acaba el tiempo), muestra un mensaje
# \a es el carácter de alerta de la terminal que reproduce un sonido de campana
print("¡Se acabó el tiempo! ¡La alarma está sonando! \a")
except ValueError:
# Manejar el caso en que se ingresa una entrada no numérica (int() falla)
print("Error: Por favor, introduce un número válido.")
except KeyboardInterrupt:
# Manejar el caso en que el usuario interrumpe el programa con Ctrl+C
print("\nTemporizador interrumpido.")
Próximos Pasos
Ahora que puedes hacer un temporizador, ¿por qué no intentas hacer un juego para competir contra el ordenador? Usar el módulo `random` para manejar números aleatorios te abrirá el siguiente nivel de diversión en la programación.
➡️ Crear un Juego Simple de Adivinar el Número en Python (Usando random)