python天气预报的功能介绍_python实现智能语音天气预报

本系统主要包括四个函数:

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(r'C:\Users\ban\Desktop\bsy\sound2.mp3')

#未来四天天气变化图

def Future_weather_states(forecast):

future_forecast = forecast

dict={}

#获取未来四天天气状况

for i in range(5):

data = []

date=future_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、最终效果

1903877-20200109140844417-629495729.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue获取DOM元素并设置属性

这里我想到了2个方法&#xff1a; 方法一&#xff1a; 直接给相应的元素加id,然后再document.getElementById("id");获取&#xff0c;然后设置相应属性或样式 方法二&#xff1a; 使用ref,给相应的元素加ref“name” 然后再this.$refs.name获取到该元素 注意&…

甲骨文发布Java 8

甲骨文决定在3月18日发布升级到JDK&#xff08;Java开发工具包&#xff09;8的消息&#xff0c;尽管新版本可能会带来一些错误&#xff08;如Full speed所介绍的那样&#xff09; &#xff1a;甲骨文将在3月份发布Java 8&#xff0c;即使有错误 。 Oracle JDK 8发行经理Mathia…

python所有基础

下面就不一一列举了&#xff0c;所有的资料都和GitHub对接&#xff0c;到时候我有更新就直接拖到GitHub上面了。入门的小伙伴们可以进来看看&#xff0c;估计后面还会有很多项目&#xff0c;待更新。 转载于:https://www.cnblogs.com/wuzaipei/p/9633673.html

计算机硬件系统一直延用,会计从业资格证考试:会计电算化计算机硬件系统

要求掌握冯•诺依曼计算机体系结构的基本思想&#xff0c;熟悉计算机硬件的组成及其工作原理&#xff0c;掌握计算机中的常用术语和主要性能指标。1946年&#xff0c;著名美籍匈牙利数学家冯•诺依曼(JohnVon Neumann)提出并论证了计算机体系结构的基本思想。目前的电子计算机都…

部署环境_Hyperledger Fabric Composer环境部署(一)

声明&#xff1a;本体系Hyperledger Fabric Composer相关分享都是基于MacPro进行多次亲测和体验。今天我这里主要介绍的是这些先决条件安装完成后&#xff0c;如何搭建和使用一个基础环境的问题&#xff0c;适合有一定基础的同学一起交流&#xff0c;也欢迎随时留言交流&#x…

输入参数的数目不足_sklearn.decomposition.PCA 参数速查手册

sklearn常用的API参数解析&#xff1a;sklearn.linear_model.LinearRegression调用sklearn.decomposition.PCA(n_componentsNone, copyTrue, whitenFalse, svd_solverauto, tol0.0, iterated_powerauto, random_stateNone)参数n_components释义PCA 算法中所要保留的主成分个数 …

vue-cli打包之后的项目在nginx的部署

vue-cli执行 npm run build 进行打包&#xff0c;生成dist文件夹&#xff0c;把该文件夹下的文件直接复制到nginx服务器目录下&#xff0c;就可打开项目&#xff0c;但是只有首页是可以看到的&#xff0c;再刷新一下就404了&#xff0c;原因是vue的项目为单页应用&#xff0c;路…

了解位图

几周前&#xff0c;我和Alistair一起研究了用于对Neo4j数据库中节点已附加到其上的标签进行建模的代码。 这种工作方式是将32个节点ID的块表示为每个标签的32位位图 &#xff0c;其中位1表示节点具有标签&#xff0c;而0表示没有标签。 例如&#xff0c;假设我们有节点ID 0-3…

centos7输入法,非root用户无法使用

背景&#xff1a; 1. centos7安装完了输入法之后&#xff0c;root账号能正常使用&#xff0c;但是非root账号始终无法使用中文 解决方案&#xff1a;   1. 登录非root账号&#xff0c;编译家目录的隐藏文件.bash_profile  export GTK_IM_MODULEibus  export XMODIFIERSim…

服务器旧图片维护,图片服务器

注意&#xff1a;AKCMS已于2019年12月27日宣布停止更新&#xff0c;此文档仅供老用户参考&#xff0c;不建议新用户选择AKCMS建站。注意&#xff1a;AKCMS6.1.2已取消授权机制&#xff0c;文档中关于授权、服务、技术支持等的内容均已失效。3.9.4版本起&#xff0c;增加了图床功…

各种说明方法的答题格式_语文万能答题公式,给孩子收藏吧!

1、某句话在文中的作用1、文首&#xff1a;开篇点题&#xff1b;渲染气氛(散文)&#xff0c;埋下伏笔(记叙类文章)&#xff0c;设置悬念(小说)&#xff0c;为下文作辅垫&#xff1b;总领下文&#xff1b;2、文中&#xff1a;承上启下&#xff1b;总领下文&#xff1b;总结上文&…

pr文字转语音有插件吗_文字转语音软件深度解析

网络时代的迅猛发展&#xff0c;丰富了我们的眼见&#xff0c;便利了我们的生活&#xff0c;升华了我们的素养。那你知道近年来配音行业的迅速崛起吗&#xff1f;视频配音&#xff0c;广告配音&#xff0c;小视频配音等等&#xff0c;其实配音处处都陪伴在我们身边&#xff0c;…

装饰图案

装饰图案 我不经常使用的一种设计模式是Decorator 。 我不确定为什么这种模式不受欢迎&#xff0c;因为它很方便。 装饰器模式允许以受控方式向对象添加功能。 即使在使用静态类型的语言时&#xff0c;也可以在运行时运行&#xff01; 装饰器模式是子类的替代方法。 子类化在编…

Webpack - 自学笔记

webpack 4第1课 概念1 模块化工具 构建工具 打包工具2 webpack把所有的东西打包成js文件&#xff0c;压缩图片&#xff0c;把sass生成css,3 热加载4 自己有服务器第2课 安装1 先安装NodeJS node --version2 换成淘宝镜像 npm install -g cnpm --registryhttps://registry.np…

Neural Networks

神经网络能够使用torch.nn包构建神经网络。 现在你已经对autogard有了初步的了解&#xff0c;nn基于autograd来定义模型并进行微分。一个nn.Module包含层&#xff0c;和一个forward(input)方法并返回output。 以如下分类数字图片的网络所示&#xff1a; 这是一个简单的前馈网络…

文件服务器磁盘配额管理,Windows2008 (FSRM)文件服务器资源管理器网站文件夹磁盘配额管理...

在windows server里提供了一个功能强大的管理工具&#xff0c;就是文件服务器资源管理器。简称FSRM(File Server Resource Manager)通过此工具&#xff0c;可能对网站进去配额以及相关服务。我们通过使用FSRM&#xff0c;可以为文件夹和卷设置配额&#xff0c;主动屏蔽文件&…

python读取hdf5文件_Python处理HDF5文件

笔记地址&#xff1a;有道云笔记 h5py 的安装 pip install h5py 读取 H5 文件 import h5py import numpy as np # 打开文件 f h5py.File(test-dev.h5, r) H5 中的group可以类比为字典&#xff0c;因此我们可以用keys()来获取键值。 >>> f.keys() [umy_xmax, umy_xmin…

数据分析sql面试必会6题经典_面试数据分析会遇到的SQL题

「1」说在前面数据存放在数据库里&#xff0c;以表的形式分门别类。宜家的商品(数据)放在宜家的仓库(数据库)里&#xff0c;以货位的形式分门别类。在宜家&#xff0c;可以通过商品上的编号&#xff0c;查到商品在仓库的排号和位号&#xff0c;取到商品。SQL 语言是一种通用的数…

Hibernate 4.3 ORM工具

Hibernate最近发布了Hibernate ORM 4.3的最终版本&#xff0c;它是一个基于Java的ORM框架&#xff0c;它还支持存储过程和实体图。 发行了ORM Tool Hibernate 4.3&#xff0c;实现了JPA 2.1规范&#xff0c;引入了该发行版的主要功能&#xff0c;简而言之&#xff1a; 支持在提…

301、404、200、304、500HTTP状态

一些常见的状态码为&#xff1a; 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务器超时 下面提供 HTTP 状态码的完整列表。点击链接可了解详情。您也可以访问 HTTP 状态码上的 W3C 页获取更多信息。 一、临时响应  1xx(临时响应) 表示临时响应并需要请求者继续…