Python 实现的智能天气预报系统

功能说明:

这个 Python 程序使用 requests 库调用一个开放的天气 API,获取实时天气数据,并根据用户的地理位置或输入的城市名提供个性化的天气预报。该程序还包括一系列智能功能,如天气提醒(根据天气变化提醒用户带伞等),并支持自动调整提醒时间,确保用户在出行前得到及时的天气预警。

特点:

  • 自动获取天气数据:使用 OpenWeatherMap API 自动获取天气信息。
  • 多城市支持:用户可以查询任意城市的天气。
  • 天气提醒:程序会根据天气变化发送提醒,如提醒用户是否需要携带雨具。
  • 天气趋势分析:根据用户需求,分析未来几天的天气趋势。
  • 温度单位自定义:支持温度单位(摄氏度、华氏度)自定义。
  • 自动化调度:可以设置定时任务,定时获取天气数据并提醒用户。
代码:
import requests
import json
import time
from datetime import datetime

# 设置天气 API 的基本配置
API_KEY = 'your_api_key'  # 从 OpenWeatherMap 获取 API Key
BASE_URL = 'http://api.openweathermap.org/data/2.5/weather?'  # 天气查询的基本 URL

# 配置天气提醒阈值
RAIN_THRESHOLD = 0.1  # 如果降水量超过这个值,提醒用户带伞
TEMPERATURE_THRESHOLD = 30  # 温度超过 30°C,提醒用户注意高温

# 查询天气的函数
def get_weather(city_name, unit='metric'):
    url = f"{BASE_URL}q={city_name}&appid={API_KEY}&units={unit}"
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        return data
    else:
        print(f"无法获取 {city_name} 的天气数据,错误代码: {response.status_code}")
        return None

# 处理天气信息并提供智能提醒
def analyze_weather(weather_data):
    if not weather_data:
        print("未能获取天气数据,无法提供天气提醒。")
        return

    main_data = weather_data['main']
    weather_conditions = weather_data['weather'][0]
    rain_data = weather_data.get('rain', {})

    temperature = main_data['temp']
    description = weather_conditions['description']
    rain = rain_data.get('1h', 0)  # 获取过去一小时的降水量

    print(f"当前温度: {temperature}°C, 天气描述: {description}")

    # 判断是否需要带伞
    if rain > RAIN_THRESHOLD:
        print("提醒: 请带伞,最近有降雨!")

    # 判断是否需要防暑
    if temperature > TEMPERATURE_THRESHOLD:
        print("提醒: 温度过高,请注意防暑!")

# 主程序
def main():
    while True:
        city = input("请输入您想查询的城市: ").strip()
        unit = input("请输入温度单位(metric: 摄氏度, imperial: 华氏度): ").strip().lower()
        
        # 获取天气数据
        weather_data = get_weather(city, unit)
        
        # 分析天气并提供提醒
        analyze_weather(weather_data)
        
        # 提供未来天气预测
        forecast = input("是否查看未来 3 天的天气预测? (y/n): ").strip().lower()
        if forecast == 'y':
            # 这里可以调用未来天气的 API (需要额外的API请求),提供天气趋势
            print("未来天气预测功能尚在开发中!")
        
        # 设置用户查询频率
        wait_time = int(input("多久后再次查询? (单位: 秒): "))
        print(f"下一次查询将在 {wait_time} 秒后执行...")
        time.sleep(wait_time)

# 执行主程序
if __name__ == "__main__":
    main()
使用说明:
  1. 安装要求:

    • Python 3.x 环境。
    • 需要安装 requests 库来发送 HTTP 请求,获取天气数据。可以使用以下命令安装:
      pip install requests
      
  2. API Key 获取:

    • 要使用这个天气查询程序,您需要从 OpenWeatherMap 获取一个免费的 API Key。
    • 注册并生成一个 API Key 后,将其替换到代码中的 API_KEY = 'your_api_key' 部分。
  3. 功能介绍:

    • 查询天气:用户输入城市名,程序会自动获取该城市的实时天气数据,包括当前温度、天气描述、降水量等。
    • 温度单位自定义:支持用户选择温度单位,metric 表示摄氏度,imperial 表示华氏度。
    • 天气提醒
      • 如果降水量超过设定的 RAIN_THRESHOLD(即0.1mm),程序会提醒用户是否需要带伞。
      • 如果温度超过 TEMPERATURE_THRESHOLD(即30°C),程序会提醒用户注意防暑。
    • 未来天气预测:目前实现了基础的天气查询功能,未来可以扩展为显示未来几天的天气趋势。
    • 定时查询:用户可以设置查询间隔时间,程序会每隔指定的秒数自动查询天气并提供提醒。
  4. 运行程序

    • 将代码保存为 weather_forecast.py
    • 在命令行中运行:
      python weather_forecast.py
      
  5. 操作流程

    • 输入您想查询的城市名。
    • 输入您希望使用的温度单位(metricimperial)。
    • 程序会提供当前的天气信息,给出相关的天气提醒。
    • 如果选择查看未来天气预测,系统会提示该功能正在开发(可以扩展该部分功能)。
    • 每次查询后,程序会询问用户是否继续查询或等待一段时间后再查询。
  6. 扩展功能

    • 未来天气预测:通过 OpenWeatherMap 的 Forecast API 获取未来几天的天气预测。
    • 自动提醒:通过邮件或短信发送天气变化提醒,避免用户错过天气变化。
    • 用户定制化:根据用户的历史查询数据,智能推荐天气预报,并做出更精确的提醒。
  7. 注意事项

    • 请确保在使用时 API Key 是有效的,且程序能够正常访问 OpenWeatherMap API。
    • 由于天气数据会实时更新,请定期查询获取最新的天气情况。
小结:

这个天气预报系统结合了智能天气提醒功能,基于用户输入的城市名,提供实时天气数据和相关的天气建议,如是否需要带伞、防暑等。通过支持定时查询功能,用户可以随时获取最新天气变化信息,并根据需求扩展更多的天气预报和提醒功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值