¿Qué es una tupla?
Al aprender sobre que es una tupla, es una estructura de datos en Python que se utiliza para almacenar un conjunto de valores. A diferencia de una lista, una tupla es inmutable, lo que significa que no se puede modificar una vez que se ha creado. No se porque pero se me vino a la cabeza un semáforo, una semejanza entre una tupla y un semáforo en términos de su estructura fija e inmutable. Así como los colores del semáforo están predefinidos y no se pueden cambiar su orden, los elementos de una tupla también están predefinidos y no se pueden cambiar una vez que se ha creado la tupla. Quise entenderlo de esta manera y me propuse a hacer un semáforo, para asi verlo mejor, no te voy a mentir me ayude al principio de mi fiel amigo con experiencia en mas de 20 años en la docencia de Python a chicos principiantes, si correcto jeje te estoy hablando de ChatGpt , ese fue el prompt que utilice para que mientras veía las clases de Python y se me viniesen dudas, el me explicaba y me ponía ejercicios para practicar y entender un poco mejor. Entonces en que quedamos, asi, en crear un semáforo para entender la tupla.
Crear una tupla para almacenar los colores del semáforo
Lo primero que debemos hacer es definir una tupla con los colores del semáforo en orden. En este caso, utilizaremos una tupla llamada SEMAFORO que contiene los valores ‘rojo’, ‘amarillo’ y ‘verde’.
# Definir una tupla con los colores del semáforo en ordenSEMAFORO = ('rojo', 'amarillo', 'verde')
Ahora pongamos que queremos decir que cada color tendrá un tiempo de duración:
`# Definir los tiempos de duraciónde cada color en segundos
TIEMPO_ROJO = 10
TIEMPO_AMARILLO = 3
TIEMPO_VERDE = 15````
**Definir el tiempo total de duración del semáforo**
También debemos definir la variable DURACION_SEMAFORO que indica cuántos minutos durará el ciclo completo del semáforo. En este caso, definiremos una duraciónde 2 minutos.
<h1>Definir el tiempo total de duración del semáforo en minutos</h1>
DURACION_SEMAFORO = 2```
Calcular el número total de ciclos del semáforo
A continuación, utilizaremos la variable DURACION_SEMAFORO y los tiempos de duración de cada color para calcular el número total de ciclos del semáforo. Para hacer esto, debemos dividir la duración total en segundos por la suma de los tiempos de duración de cada color y luego redondear el resultado al número entero más cercano.
Para calcular el número total de ciclos, utilizaremos la siguiente fórmula:
número total de ciclos = tiempo total de duración (en segundos) / suma de los tiempos de duración de cada color (en segundos)
Para aplicar esta fórmula en Python, utilizaremos la siguiente línea de código:
# Calcular el número total de ciclos del semáforo
NUM_CICLOS = int((DURACION_SEMAFORO * 60) / sum([TIEMPO_ROJO, TIEMPO_AMARILLO, TIEMPO_VERDE]))
En esta línea de código, estamos realizando la conversión del tiempo de duración del semáforo a segundos (DURACION_SEMAFORO * 60) y luego lo estamos dividiendo por la suma de los tiempos de duración de cada color en segundos (sum([TIEMPO_ROJO, TIEMPO_AMARILLO, TIEMPO_VERDE])). Finalmente, estamos convirtiendo el resultado a un número entero mediante la función int() y lo estamos almacenando en la variable NUM_CICLOS.
Ahora que hemos calculado el número total de ciclos, podemos utilizarlo para controlar la cantidad de veces que se van a repetir los ciclos del semáforo. Por ejemplo, podemos utilizar un ciclo for para mostrar el estado actual del semáforo en cada ciclo:
Iniciar el ciclo del semáforo
Una vez que hemos calculado el número total de ciclos, podemos utilizar un ciclo for para mostrar el estado actual del semáforo en cada ciclo. En cada ciclo, imprimiremos el estado actual del semáforo, esperaremos el tiempo correspondiente a cada color y rotaremos los colores del semáforo.
** Iniciar el ciclo del semáforo**
Una vez que hemos calculado el número total de ciclos, podemos utilizar un ciclo for para mostrar el estado actual del semáforo en cada ciclo. En cada ciclo, imprimiremos el estado actual del semáforo, esperaremos el tiempo correspondiente a cada color y rotaremos los colores del semáforo.
# Iniciar el ciclo del semáforofor i in range(NUM_CICLOS):
# Imprimir el estado actual del semáforoprint('Ciclo', i+1, ':', SEMAFORO[0], SEMAFORO[1], SEMAFORO[2])
# Esperar el tiempo correspondiente al color rojofor t in range(TIEMPO_ROJO, 0, -1):
print('Color rojo, tiempo restante:', t)
time.sleep(1)
# Imprimir el estado actual del semáforoprint('Ciclo', i+1, ':', SEMAFORO[0], SEMAFORO[1], SEMAFORO[2])
# Esperar el tiempo correspondiente al color amarillofor t in range(TIEMPO_AMARILLO, 0, -1):
print('Color amarillo, tiempo restante:', t)
time.sleep(1)
# Imprimir el estado actual del semáforoprint('Ciclo', i+1, ':', SEMAFORO[0], SEMAFORO[1], SEMAFORO[2])
# Esperar el tiempo correspondiente al color verdefor t in range(TIEMPO_VERDE, 0, -1):
print('Color verde, tiempo restante:', t)
time.sleep(1)
# Rotar los colores del semáforo
SEMAFORO = SEMAFORO[1:] + SEMAFORO[:1]
En este código, utilizamos un ciclo for para iterar a través de cada ciclo del semáforo (for i in range(NUM_CICLOS)). En cada ciclo, imprimimos el estado actual del semáforo (print(‘Ciclo’, i+1, ‘:’, SEMAFORO[0], SEMAFORO[1], SEMAFORO[2])) y luego iniciamos un ciclo for anidado para realizar la cuenta regresiva correspondiente al color del semáforo (for t in range(TIEMPO_ROJO, 0, -1)😃. En cada iteración de este ciclo, imprimimos el tiempo restante para el color correspondiente (print(‘Color rojo, tiempo restante:’, t)) y esperamos un segundo utilizando la función time.sleep(1).
Después de esperar el tiempo correspondiente a cada color, rotamos los colores del semáforo (SEMAFORO = SEMAFORO[1:] + SEMAFORO[:1]) para que el siguiente ciclo comience con el color siguiente.
** Ejecutar el programa**
Finalmente, podemos ejecutar el programa completo y observar cómo funciona nuestro semáforo controlado por tuplas en Python.
import time
defcontrol_semaforo():
# Definir una tupla con los colores del semáforo en orden
SEMAFORO = ('rojo', 'amarillo', 'verde')
# Definir los tiempos de duración de cada color en segundos
TIEMPO_ROJO = 10
TIEMPO_AMARILLO = 3
TIEMPO_VERDE = 15# Definir el tiempo total de duración del semáforo en minutos
DURACION_SEMAFORO = 2# Calcular el número total de ciclos del semáforo
NUM_CICLOS = int((DURACION_SEMAFORO * 60) / sum([TIEMPO_ROJO, TIEMPO_AMARILLO, TIEMPO_VERDE]))
# Imprimir el número total de ciclos del semáforoprint('El semáforo tendrá', NUM_CICLOS, 'ciclos')
# Iniciar el ciclo del semáforofor i in range(NUM_CICLOS):
# Imprimir el estado actual del semáforoprint('Ciclo', i+1, ':', SEMAFORO[0], SEMAFORO[1], SEMAFORO[2])
# Esperar el tiempo correspondiente al color rojofor t in range(TIEMPO_ROJO, 0, -1):
print(f"Color {SEMAFORO[0]}, tiempo restante: {t}")
time.sleep(1)
# Imprimir el estado actual del semáforoprint('Ciclo', i+1, ':', SEMAFORO[0], SEMAFORO[1], SEMAFORO[2])
# Esperar el tiempo correspondiente al color amarillofor t in range(TIEMPO_AMARILLO, 0, -1):
print(f"Color {SEMAFORO[1]}, tiempo restante: {t}")
time.sleep(1)
# Imprimir el estado actual del semáforoprint('Ciclo', i+1, ':', SEMAFORO[0], SEMAFORO[1], SEMAFORO[2])
# Esperar el tiempo correspondiente al color verdefor t in range(TIEMPO_VERDE, 0, -1):
print(f"Color {SEMAFORO[2]}, tiempo restante: {t}")
time.sleep(1)
# Rotar los colores del semáforo
SEMAFORO = SEMAFORO[1:] + SEMAFORO[:1]
# Ejecutar el programa
control_semaforo()```
![](
🚨🚨🚨🚨PRECIONA CONTROL C PARA PARAR EL BUCLE🚨🚨🚨🚨
Puedes presionar control c para que finalice el conteo.