河南重大项目建设网站,广告营销公司,seo排名关键词点击,教育类网站开发公司本系统主要包括四个函数#xff1a;
1、获取天气数据
1、输入要查询天气的城市
2、利用urllib模块向中华万年历天气api接口请求天气数据
3、利用gzip解压获取到的数据#xff0c;并编码utf-8
4、利用json转化成python识别的数据#xff0c;返回为天气预报数据复杂形式的字典…本系统主要包括四个函数
1、获取天气数据
1、输入要查询天气的城市
2、利用urllib模块向中华万年历天气api接口请求天气数据
3、利用gzip解压获取到的数据并编码utf-8
4、利用json转化成python识别的数据返回为天气预报数据复杂形式的字典字典中的字典
2、输出当天天气数据
1、格式化输出当天天气包括天气状况此时温度最高温度、最低温度风级风向等。
3语音播报当天天气
1、创建要输出的语音文本weather_forecast_txt
2、利用百度的语音合成模块AipSpeech,合成语音文件
3利用playsound模块播放语音
4、未来几天温度变化趋势
1、创建未来几天高低温数据的字典
2利用matplotlib模块图形化温度变化趋势
5、代码
#导入必要模块
import urllib.parse
import urllib.request
import gzip
import json
import playsound
from aip import AipSpeech
import matplotlib.pyplot as plt
import re
#设置参数图片显示中文字符否则乱码
plt.rcParams[font.sans-serif][SimHei]
#定义获取天气数据函数
def Get_weather_data():
print(------天气查询------)
city_name input(请输入要查询的城市名称)
url http://wthrcdn.etouch.cn/weather_mini?city urllib.parse.quote(city_name)
weather_data urllib.request.urlopen(url).read()
# 读取网页数据
weather_data gzip.decompress(weather_data).decode(utf-8)
# #解压网页数据
weather_dict json.loads(weather_data)
return weather_dict
#定义当天天气输出格式
def Show_weather(weather_data):
weather_dict weather_data
if weather_dict.get(desc) invilad-citykey:
print(你输入的城市有误或未收录天气请重新输入...)
elif weather_dict.get(desc) OK:
forecast weather_dict.get(data).get(forecast)
print(日期, forecast[0].get(date))
print(城市, weather_dict.get(data).get(city))
print(天气, forecast[0].get(type))
print(温度, weather_dict.get(data).get(wendu) ℃ )
print(高温, forecast[0].get(high))
print(低温, forecast[0].get(low))
print(风级, forecast[0].get(fengli).split()[2].split(])[0])
print(风向, forecast[0].get(fengxiang))
weather_forecast_txt 您好您所在的城市%s, \
天气%s, \
当前温度%s \
今天最高温度%s \
最低温度%s \
风级%s \
温馨提示%s % \
(
weather_dict.get(data).get(city),
forecast[0].get(type),
weather_dict.get(data).get(wendu),
forecast[0].get(high),
forecast[0].get(low),
forecast[0].get(fengli).split()[2].split(])[0],
weather_dict.get(data).get(ganmao)
)
return weather_forecast_txt,forecast
#定义语音播报今天天气状况
def Voice_broadcast(weather_forcast_txt):
weather_forecast_txt weather_forcast_txt
APP_ID 你的百度语音APP_ID
API_KEY 你的百度语音API_KEY
SECRET_KEY 你的百度语音SECRET_KEY
client AipSpeech(APP_ID, API_KEY, SECRET_KEY)
print(语音提醒, weather_forecast_txt)
#百度语音合成
result client.synthesis(weather_forecast_txt, zh, 1, {vol: 5})
if not isinstance(result, dict):
with open(sound2.mp3, wb) as f:
f.write(result)
f.close()
#playsound模块播放语音
playsound.playsound(rC:\Users\ban\Desktop\bsy\sound2.mp3)
#未来四天天气变化图
def Future_weather_states(forecast):
future_forecast forecast
dict{}
#获取未来四天天气状况
for i in range(5):
data []
datefuture_forecast[i][date]
date int(re.findall(\d,date)[0])
data.append(int(re.findall(\d,future_forecast[i][high])[0]))
data.append(int(re.findall(\d, future_forecast[i][low])[0]))
data.append(future_forecast[i][type])
dict[date] data
data_list sorted(dict.items())
date[]
high_temperature []
low_temperature []
for each in data_list:
date.append(each[0])
high_temperature.append(each[1][0])
low_temperature.append(each[1][1])
fig plt.plot(date,high_temperature,r,date,low_temperature,b)
plt.xlabel(日期)
plt.ylabel(℃)
plt.legend([高温,低温])
plt.xticks(date)
plt.title(最近几天温度变化趋势)
plt.show()
#主函数
if __name____main__:
weather_data Get_weather_data()
weather_forecast_txt, forecast Show_weather(weather_data)
Future_weather_states(forecast)
Voice_broadcast(weather_forecast_txt)
6、最终效果