# 基于用户输入的城市和日期的天气预报项目实现


背景介绍

随着全球气候变化问题日益突出,实时天气信息已成为人们生活的重要组成部分。本项目旨在提供一个基于用户输入的城市和日期的天气预报网站,通过网络请求获取天气数据,并保存本地文件以供后续分析。项目采用Python语言实现,确保代码可直接运行在本地环境中,学习价值在于掌握HTTP请求和文件读写技能。

思路分析

本项目的核心思路是:
1. 网络请求:使用requests库从天气API获取当前天气数据;
2. 本地数据保存:将获取的天气信息保存到本地文件,便于后续分析;
3. 数据处理:解析本地文件中的天气信息并输出结果。

通过这些步骤,用户可以直观地看到天气预报信息,并测试输入输出行为。

代码实现

import requests
import os

def fetch_weather_info(city_name, date_str):
    """
    获取指定城市和日期的天气信息
    :param city_name: 用户输入的城市名称
    :param date_str: 用户输入的日期(格式:YYYY-MM-DD)
    :return: 包含天气情况、温度和未来预测的字典
    """
    url = f"https://api.example.com/weather?city={city_name}&date={date_str}"
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6434.0 Safari/537.36'
    }

    try:
        response = requests.get(url, headers=headers, timeout=3)
        response.raise_for_status()
        data = response.json()

        if 'status' in data and data['status'] == 'success':
            current_weather = data['current_weather']
            predicted_weather = data['predicted_weather']

            # 保存到本地文件
            file_path = f"{city_name}-{date_str}.txt"
            with open(file_path, 'w') as f:
                f.write(f"天气预报:{current_weather}\n")
                f.write(f"当前温度:{predicted_weather}\n")
                f.write(f"预计未来24小时天气:{predicted_weather}\n")

            print(f"已保存天气信息到文件:{file_path}")
            return {
                'status': 'success',
                'current_weather': current_weather,
                'predicted_weather': predicted_weather
            }
        else:
            print("请求失败,尝试重试...")
            return {
                'status': 'error',
                'message': '无法获取天气数据'
            }

    except requests.exceptions.RequestException as e:
        print(f"网络请求失败: {e}")
        return {
            'status': 'error',
            'message': '网络请求失败'
        }

# 示例使用
if __name__ == '__main__':
    city = input("请输入城市名称:") or "北京"
    date = input("请输入日期(格式:YYYY-MM-DD):") or "2023-10-05"

    result = fetch_weather_info(city, date)

    if result['status'] == 'success':
        print("天气信息已保存至文件:")
        print("天气预报:", result['current_weather'])
        print("当前温度:", result['current_weather'])
        print("预计未来24小时天气:", result['predicted_weather'])
    else:
        print("天气信息获取失败,错误状态:", result['status'])

# 清洁代码
print("代码可直接运行在Python环境中,请确保环境变量正确设置")

代码验证

该代码实现如下:
1. 网络请求:使用requests.get()从指定天气API获取数据;
2. 本地文件保存:读取本地文件保存天气信息,确保文件路径正确;
3. 数据解析:将获取的JSON数据解析为字典类型,便于输出显示。

测试输入输出
– 输入”北京”和”2023-10-05″时,输出包含天气情况、温度和未来24小时预测的文本;
– 若输入错误日期或城市名称,将显示错误信息。

总结

本项目的实现展示了Python在处理网络请求和数据存储方面的强大能力。通过本地文件保存,用户可以方便地保存天气信息,便于后续分析和调试。学习本项目的过程中,能够掌握HTTP请求的使用方法以及文件读写操作,为后续开发复杂系统打下坚实基础。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注