#!/usr/bin/python3 import requests API_KEY = '35efb00415742337258dd1ba28238572' # Reemplaza 'tu_api_key' con tu clave de OpenWeatherMap BASE_URL = 'http://api.openweathermap.org/data/2.5/weather' def obtener_clima(ciudad="Alonsotegi"): """ Consulta el clima de una ciudad específica y maneja errores de conexión y HTTP. Parámetros: ciudad (str): Nombre de la ciudad a consultar. Retorna: dict: Datos meteorológicos en caso de éxito. None: Si ocurre un error en la conexión o la solicitud. """ parametros = { 'q': ciudad, 'appid': API_KEY, 'units': 'metric', # Resultados en grados Celsius 'lang': 'es' # Descripciones en español } try: response = requests.get(BASE_URL, params=parametros) response.raise_for_status() # Verifica errores HTTP return response.json() # Retorna los datos JSON si la solicitud es exitosa except requests.exceptions.RequestException as e: # Captura errores de conexión o URL mal formada print("Error en la conexión o URL:", e) return None except requests.exceptions.HTTPError as err: # Captura errores HTTP específicos (404, 500, etc.) print("Error HTTP:", err) return None def verificar_alertas(data): """ Verifica condiciones meteorológicas extremas en los datos climáticos y genera alertas adecuadas. Parámetros: data (dict): Un diccionario con datos meteorológicos, típicamente obtenido de la API de OpenWeatherMap. Debe incluir al menos las claves 'main' con la subclave 'temp' para la temperatura, 'wind' con la subclave 'speed' para la velocidad del viento, y opcionalmente 'rain' para lluvia. Retorna: list: Una lista de strings con las alertas correspondientes a condiciones climáticas extremas: - "⚠️ Alerta de calor extremo" si la temperatura supera los 35°C. - "⚠️ Alerta de viento fuerte" si la velocidad del viento supera los 20 m/s. - "☔ Alerta de lluvia" si se detecta la clave 'rain' en los datos meteorológicos. Ejemplo: data = { "main": {"temp": 37}, "wind": {"speed": 15}, "rain": {"1h": 1.0} } alertas = verificar_alertas(data) # alertas debería ser: ["⚠️ Alerta de calor extremo", "☔ Alerta de lluvia"] """ alertas = [] # Lista para almacenar alertas # Verifica si la temperatura supera los 35°C if data['main']['temp'] > 35: alertas.append("⚠️ Alerta de calor extremo") # Verifica si la velocidad del viento supera los 20 m/s if data['wind']['speed'] > 20: alertas.append("⚠️ Alerta de viento fuerte") # Verifica si hay datos de lluvia if 'rain' in data: alertas.append("☔ Alerta de lluvia") return alertas # Ejemplo de uso #print(verificar_alertas(obtener_clima("Bilbao"))) print(verificar_alertas(obtener_clima())) #exit() # Datos de ejemplo con temperatura alta y lluvia data = { "main": {"temp": 36}, "wind": {"speed": 10}, "rain": {"1h": 1.5} } alertas = verificar_alertas(data) print(alertas) # Salida esperada: ["⚠️ Alerta de calor extremo", "☔ Alerta de lluvia"] # Datos de ejemplo con viento fuerte data = { "main": {"temp": 22}, "wind": {"speed": 25}, } alertas = verificar_alertas(data) print(alertas) # Salida esperada: ["⚠️ Alerta de viento fuerte"]