功能说明:
这个 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()
使用说明:
-
安装要求:
- Python 3.x 环境。
- 需要安装
requests
库来发送 HTTP 请求,获取天气数据。可以使用以下命令安装:pip install requests
-
API Key 获取:
- 要使用这个天气查询程序,您需要从 OpenWeatherMap 获取一个免费的 API Key。
- 注册并生成一个 API Key 后,将其替换到代码中的
API_KEY = 'your_api_key'
部分。
-
功能介绍:
- 查询天气:用户输入城市名,程序会自动获取该城市的实时天气数据,包括当前温度、天气描述、降水量等。
- 温度单位自定义:支持用户选择温度单位,
metric
表示摄氏度,imperial
表示华氏度。 - 天气提醒:
- 如果降水量超过设定的
RAIN_THRESHOLD
(即0.1mm),程序会提醒用户是否需要带伞。 - 如果温度超过
TEMPERATURE_THRESHOLD
(即30°C),程序会提醒用户注意防暑。
- 如果降水量超过设定的
- 未来天气预测:目前实现了基础的天气查询功能,未来可以扩展为显示未来几天的天气趋势。
- 定时查询:用户可以设置查询间隔时间,程序会每隔指定的秒数自动查询天气并提供提醒。
-
运行程序:
- 将代码保存为
weather_forecast.py
。 - 在命令行中运行:
python weather_forecast.py
- 将代码保存为
-
操作流程:
- 输入您想查询的城市名。
- 输入您希望使用的温度单位(
metric
或imperial
)。 - 程序会提供当前的天气信息,给出相关的天气提醒。
- 如果选择查看未来天气预测,系统会提示该功能正在开发(可以扩展该部分功能)。
- 每次查询后,程序会询问用户是否继续查询或等待一段时间后再查询。
-
扩展功能:
- 未来天气预测:通过
OpenWeatherMap
的 Forecast API 获取未来几天的天气预测。 - 自动提醒:通过邮件或短信发送天气变化提醒,避免用户错过天气变化。
- 用户定制化:根据用户的历史查询数据,智能推荐天气预报,并做出更精确的提醒。
- 未来天气预测:通过
-
注意事项:
- 请确保在使用时 API Key 是有效的,且程序能够正常访问 OpenWeatherMap API。
- 由于天气数据会实时更新,请定期查询获取最新的天气情况。
小结:
这个天气预报系统结合了智能天气提醒功能,基于用户输入的城市名,提供实时天气数据和相关的天气建议,如是否需要带伞、防暑等。通过支持定时查询功能,用户可以随时获取最新天气变化信息,并根据需求扩展更多的天气预报和提醒功能。