Importación de librerías

import requests

Se importa el módulo requests, que permite hacer solicitudes HTTP fácilmente.

Definición de la función obtener_clima

def obtener_clima(ciudad, api_key):

Se define una función que recibe dos parámetros: el nombre de la ciudad y la clave de API para autenticarse.

Construcción de la URL


url = f"http://api.openweathermap.org/data/2.5/weather?q={ciudad}&appid={api_key}&units=metric&lang=es"
                

Se construye la URL con formato f-string para incluir la ciudad, la API Key, unidades métricas y lenguaje en español.

Solicitud HTTP

respuesta = requests.get(url)

Se hace la solicitud HTTP GET a la API de OpenWeatherMap.

Verificación de respuesta exitosa

if respuesta.status_code == 200:

Se comprueba si la respuesta fue exitosa (código 200).

Procesamiento de los datos


datos = respuesta.json()
clima = {
    "ciudad": datos["name"],
    "temperatura": datos["main"]["temp"],
    "descripcion": datos["weather"][0]["description"],
    "humedad": datos["main"]["humidity"],
    "viento": datos["wind"]["speed"]
}
return clima
                

Se convierte la respuesta a JSON y se extraen los datos principales del clima en un diccionario.

Manejo de error en la solicitud


else:
    return {"error": "No se pudo obtener el clima."}
                

Si el código de estado no es 200, se retorna un mensaje de error.

Bloque principal del script


if __name__ == "__main__":
    ciudad = input("Ingrese el nombre de la ciudad: ")
    api_key = "TU_API_KEY_AQUI"
    clima = obtener_clima(ciudad, api_key)
                

Se ejecuta este bloque solo si el archivo se ejecuta directamente. Se pide al usuario la ciudad y se llama a la función.

Verificación de error y salida


if "error" in clima:
    print(clima["error"])
else:
    print(f"Clima en {clima['ciudad']}:")
    print(f"Temperatura: {clima['temperatura']}°C")
    print(f"Descripción: {clima['descripcion']}")
    print(f"Humedad: {clima['humedad']}%")
    print(f"Viento: {clima['viento']} m/s")
                

Se verifica si hubo error. Si no, se imprime la información detallada del clima.