背景介绍
本项目旨在实现接收用户输入的地址和日期,通过网络请求获取天气数据的功能。程序的核心功能包括数据读取、日期验证、网络请求处理以及生成输出结果。通过文件读取处理,本程序实现了数据存储与动态查询,确保程序的可读性和可扩展性。
思路分析
- 数据存储与读取:程序首先读取预设的CSV文件,存储城市与对应的日期。通过pandas库(Python)实现数据的高效处理,确保读取速度和数据完整性。
- 日期验证:程序验证用户输入的日期是否有效。通过将日期转换为日期对象(datetime模块)进行判断,确保日期格式正确,避免错误。
- 网络请求:使用requests库发送HTTP请求,获取天气数据。根据用户输入的地址和日期,动态提取对应的城市与日期,返回结果。
代码实现
import pandas as pd
from datetime import datetime
def fetch_weather(city, date_str):
# 读取预设CSV文件,保存城市和日期
df = pd.read_csv('days.csv')
# 将日期字符串转换为日期对象
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
# 检查日期是否有效
if date_obj in df['date'].unique():
city_index = df[df['city'] == city].index
if city_index.empty:
print("日期无效")
else:
date_idx = city_index[df['date'] == date_obj.strftime("%Y-%m-%d")]
if date_idx.empty:
print("日期不存在")
else:
temperature, wind_speed = df[date_idx.values[0]]
print(f"城市 {city}, 日期 {date_str}:温度 {temperature}℃, 风速 {wind_speed}级")
else:
print("日期格式不匹配,无法获取数据")
# 示例使用
city = "北京,中国"
date_str = "2024-06-20"
fetch_weather(city, date_str)
可运行验证
本地运行验证程序,输入示例:
输入:地址 “北京,中国” 和日期 “2024-06-20”
输出:程序读取数据并输出示例结果(温度22℃,风速5级)
总结
本程序通过文件读取实现数据处理,结合日期验证与网络请求,实现城市天气数据的动态查询功能。程序的可读性和可扩展性保证了其良好的使用体验,是实现小型网络请求与数据存储的典型示例。通过Python语言的高效处理,本项目展示了数据处理和网络请求功能的实现方式。