一起学习网 一起学习网


基于Python的天气查询程序

开发 Python weather app, OpenWeatherMap API, weather query Python, Python requests library, beginner Python project 03-18

如何实现一个简单的基于Python的天气查询程序


在本篇文章中,我们将学习如何创建一个天气查询程序。借助第三方API服务,我们能够获取当前的天气信息并展示给用户。本教程面向Python初学者,逐步教授开发过程。

所需服务和工具

  1. Python环境(建议使用Python 3.x)
  2. 第三方天气API:推荐使用 OpenWeatherMap
  3. HTTP请求库requests(可通过 pip install requests 安装)

功能概述

该程序可以:

  • 允许用户输入城市名称。
  • 查询并返回该城市当前的天气状况及气温。
  • 输出信息以人类可读的形式显示。

步骤1:注册以及获取API密钥

  1. 在 OpenWeatherMap 的官方网站注册账号。
  2. 登录并生成一个 API 密钥,用于验证你的请求。

步骤2:安装必要的库

打开命令行/终端,并输入以下命令以安装 requests 库:

pip install requests

requests 是一个优秀的 HTTP 请求库,可以帮助我们与 API 进行交互。


步骤3:编写 Python 脚本

以下是完整代码,将分步骤说明:

import requests

def get_weather_data(city_name, api_key):
    """
    通过 OpenWeatherMap API 获取天气信息。
    
    参数:
        city_name (str): 查询的城市名称
        api_key (str): API密钥
        
    返回:
        dict: 天气数据的字典形式
    """
    base_url = "http://api.openweathermap.org/data/2.5/weather"
    params = {
        "q": city_name,
        "appid": api_key,
        "units": "metric"  # 使用摄氏度
    }
    response = requests.get(base_url, params=params)
    
    if response.status_code == 200:
        return response.json()
    else:
        print(f"Error: Unable to fetch data for {city_name}. HTTP Status Code: {response.status_code}")
        return None

def display_weather_info(weather_data):
    """
    打印天气信息。
    
    参数:
        weather_data (dict): 天气数据
    """
    if weather_data:
        city = weather_data.get("name", "Unknown")
        country = weather_data["sys"].get("country", "Unknown")
        temperature = weather_data["main"]["temp"]
        description = weather_data["weather"][0]["description"]
        
        print(f"City: {city}, Country: {country}")
        print(f"Temperature: {temperature}°C")
        print(f"Weather Description: {description.capitalize()}")
    else:
        print("No weather information to display.")

def main():
    print("===== Weather Query Program =====")
    api_key = input("Enter your OpenWeatherMap API key: ")
    city_name = input("Enter the city name: ")
    
    weather_data = get_weather_data(city_name, api_key)
    display_weather_info(weather_data)

if __name__ == "__main__":
    main()

功能的详细说明

  1. 获取天气数据

    • 使用 requests.get() 发起 HTTP 请求,用户名输入的城市名称将作为参数发送到 API。
    • units=metric 指定采用摄氏度;默认是开尔文。
  2. 错误处理

    • 如果请求失败,程序会打印错误信息并返回。
  3. 展示信息

    • 提取关键字段如城市名称、国家名称、当前温度和天气描述,并格式化输出。
  4. 用户输入

    • 用户在终端中输入城市名称以及 API 密钥。

步骤4:运行程序

  1. 保存代码文件,命名为 weather_query.py
  2. 打开终端,输入以下命令运行脚本:
    python weather_query.py
    
  3. 按提示输入你的API密钥和城市名称。

当输入有效城市名称时,程序将输出天气状况。例如:

===== Weather Query Program =====
Enter your OpenWeatherMap API key: YOUR_API_KEY_HERE
Enter the city name: London
City: London, Country: GB
Temperature: 13.5°C
Weather Description: Clear sky

额外扩展功能

  1. 支持多语言返回结果

    • 修改 API 的 lang 参数,支持返回中文或其他语言描述。
    • 例如,使用 lang=zh 参数,天气描述将变为中文。
  2. 保存查询记录

    • 将查询的天气信息存储到文本文件。
    • 示例代码:
      with open("weather_log.txt", "a") as file:
          file.write(f"{city} - Temperature: {temperature}°C, Weather: {description}\n")
      print("Weather information saved successfully!")
      

结束语

这个天气查询程序是一个基础示例,帮助你熟悉 API 交互和 HTTP 请求库的使用。在此基础上,你可以添加更多功能,例如预测天气、支持多城市查询等。希望你能从中学到新技能!


编辑:一起学习网