Saltar a contenido

Trabajo Práctico 1 — Pato controla el clima#

Introducción#

En el pueblo Kokaua, el clima es un factor muy importante para la vida diaria, pero al mismo tiempo muy difícil de predecir. Algunos habitantes incluso se atreven a decir que hay un pez que lo controla. El Instituto Meteorológico de Hawaii (IMH) le pide a usted que simule el clima de la región durante varios días, para ayudar a los habitantes a planificar sus actividades.

Kokaua

Imagen de la isla de Kokaua generada con Sora

Modelo#

El IMH ha desarrollado un modelo probabilístico para el clima de Kokaua, basado en la observación de patrones históricos.

El clima en Kokaua puede estar en alguno de los siguientes cinco estados:

  • ☀️ Soleado
  • ☁️ Nublado
  • 🌧️ Lluvioso
  • ⛈️ Tormenta
  • ❄️ Nevado

Este estado se mantiene constante durante todo el día. La probabilidad de pasar de un estado a otro está dada por la siguiente tabla, descubierta por el Instituto Meteorológico de Hawaii:

Desde / Hacia Soleado ☀️ Nublado ☁️ Lluvioso 🌧️ Tormenta ⛈️ Nevado ❄️
Soleado ☀️ 60 % 30 % 5 % 3 % 2 %
Nublado ☁️ 40 % 30 % 20 % 5 % 5 %
Lluvioso 🌧️ 10 % 30 % 40 % 15 % 5 %
Tormenta ⛈️ 5 % 10 % 30 % 50 % 5 %
Nevado ❄️ 5 % 20 % 20 % 10 % 45 %

Cada fila indica las probabilidades de transición desde ese estado hacia los demás. Por ejemplo, si hoy está soleado, hay 60% de que mañana también lo esté, 30% de que se nuble, 5% de que llueva, 3% de que haya tormenta y 2% de que nieve.

Desarrollo#

Se te pide que escribas los siguientes tres programas utilizando el lenguaje de programación Python, cada uno en un archivo separado. Se espera que las salidas de estos programas sean textos legibles, claros y bien formateados.

1 — Simulador de clima#

Pedí al usuario: - El estado inicial del clima (uno de: soleado, nublado, lluvioso, tormenta, nevado) - La cantidad de días a simular (entero mayor a 0)

Simulá el clima durante ese número de días, e imprimí una línea por día, usando el siguiente formato:

Día 0: ☀️ Soleado
Día 1: ☁️ Nublado
Día 2: 🌧️ Lluvioso
...
Elecciones aleatorias

Para elegir un elemento aleatorio de una lista se puede usar el módulo random de Python. Por ejemplo, para elegir un elemento aleatorio de una lista l se puede hacer random.choices(l). También se pueden usar pesos para definir la probabilidad de elegir cada elemento.

import random

l = [1, 2, 3, 4, 5]
print(random.choices(l, weights=[10,50,20,15,5])) # Imprime un número aleatorio de la lista

Ejemplos de ejecución del programa

Ingrese estado inicial: soleado
Ingrese cantidad de días: 5

Día 0: ☀️ Soleado
Día 1: ☁️ Nublado
Día 2: 🌧️ Lluvioso
Día 3: ⛈️ Tormenta
Día 4: ⛈️ Tormenta
Día 5: 🌧️ Lluvioso
Ingrese estado inicial: frio
Ingrese cantidad de días: 5

El estado inicial debe ser uno de: soleado, nublado, lluvioso, tormenta, nevado
Ingrese estado inicial: soleado
Ingrese cantidad de días: -3

La cantidad de días debe ser un entero positivo

2 — ¿Clima estable?#

Simulá el clima de Kokaua durante 500 días, comenzando siempre en estado soleado.

Al finalizar, imprimí:

  • La cantidad de días de cada tipo de clima
  • El clima más frecuente
  • El porcentaje de aparición de cada estado

No se debe imprimir nada más que el resultado en este programa.

Ejemplo de salida esperada

Días soleados: 181 (36.13%)
Días nublados: 107 (21.36%)
Días lluviosos: 113 (22.55%)
Días tormentas: 77 (15.37%)
Días nevados: 23 (4.59%)

El clima más frecuente fue: ☀️ Soleado

3 — Rachas climáticas#

Simulá nuevamente 10000 días de clima, comenzando desde soleado.

Tu tarea es encontrar:

  • La racha más larga de un mismo clima (por ejemplo: 6 días seguidos de lluvia)
  • El clima al que correspondió esa racha
  • Cuántas rachas de al menos 4 días hubo en total

No se debe imprimir nada más que el resultado en este programa.

Ejemplo de salida esperada

Racha más larga: 15 días de ☀️ Soleado
Rachas de más de 3 días: 552

Entrega#

El trabajo es individual. Se debe entregar los 4 archivos de Python generados a través de la tarea creada en el campus del curso. La fecha de entrega se encuentra en la misma tarea y en el calendario del curso.

Los nombres de los archivos deben ser:

  • tp1_1_apellido.py
  • tp1_2_apellido.py
  • tp1_3_apellido.py
  • tp1_funciones_apellido.py

El código debe estar implementado utilizando únicamente herramientas vistas en clase hasta el momento. No se permite usar librerías además de las que se mencionan en el enunciado.

Se recuerda a los estudiantes que las entregas deben ser un producto original de cada estudiante, por lo que se les pide revisar la sección 6 del programa de la materia y el Código de Honor y Ética.