日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

發(fā)布時(shí)間:2023/12/1 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python天气预报的功能介绍_python实现智能语音天气预报 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本系統(tǒng)主要包括四個(gè)函數(shù):

1、獲取天氣數(shù)據(jù)

1、輸入要查詢(xún)天氣的城市

2、利用urllib模塊向中華萬(wàn)年歷天氣api接口請(qǐng)求天氣數(shù)據(jù)

3、利用gzip解壓獲取到的數(shù)據(jù),并編碼utf-8

4、利用json轉(zhuǎn)化成python識(shí)別的數(shù)據(jù),返回為天氣預(yù)報(bào)數(shù)據(jù)復(fù)雜形式的字典(字典中的字典)

2、輸出當(dāng)天天氣數(shù)據(jù)

1、格式化輸出當(dāng)天天氣,包括:天氣狀況,此時(shí)溫度,最高溫度、最低溫度,風(fēng)級(jí),風(fēng)向等。

3,語(yǔ)音播報(bào)當(dāng)天天氣

1、創(chuàng)建要輸出的語(yǔ)音文本(weather_forecast_txt)

2、利用百度的語(yǔ)音合成模塊AipSpeech,合成語(yǔ)音文件

3,利用playsound模塊播放語(yǔ)音

4、未來(lái)幾天溫度變化趨勢(shì)

1、創(chuàng)建未來(lái)幾天高低溫?cái)?shù)據(jù)的字典

2,利用matplotlib模塊,圖形化溫度變化趨勢(shì)

5、代碼

#導(dǎo)入必要模塊

import urllib.parse

import urllib.request

import gzip

import json

import playsound

from aip import AipSpeech

import matplotlib.pyplot as plt

import re

#設(shè)置參數(shù),圖片顯示中文字符,否則亂碼

plt.rcParams['font.sans-serif']=['SimHei']

#定義獲取天氣數(shù)據(jù)函數(shù)

def Get_weather_data():

print('------天氣查詢(xún)------')

city_name = input('請(qǐng)輸入要查詢(xún)的城市名稱(chēng):')

url = 'http://wthrcdn.etouch.cn/weather_mini?city=' + urllib.parse.quote(city_name)

weather_data = urllib.request.urlopen(url).read()

# 讀取網(wǎng)頁(yè)數(shù)據(jù)

weather_data = gzip.decompress(weather_data).decode('utf-8')

# #解壓網(wǎng)頁(yè)數(shù)據(jù)

weather_dict = json.loads(weather_data)

return weather_dict

#定義當(dāng)天天氣輸出格式

def Show_weather(weather_data):

weather_dict = weather_data

if weather_dict.get('desc') == 'invilad-citykey':

print('你輸入的城市有誤或未收錄天氣,請(qǐng)重新輸入...')

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('風(fēng)級(jí):', forecast[0].get('fengli').split('<')[2].split(']')[0])

print('風(fēng)向:', forecast[0].get('fengxiang'))

weather_forecast_txt = '您好,您所在的城市%s,' \

'天氣%s,' \

'當(dāng)前溫度%s,' \

'今天最高溫度%s,' \

'最低溫度%s,' \

'風(fēng)級(jí)%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

#定義語(yǔ)音播報(bào)今天天氣狀況

def Voice_broadcast(weather_forcast_txt):

weather_forecast_txt = weather_forcast_txt

APP_ID = 你的百度語(yǔ)音APP_ID

API_KEY = 你的百度語(yǔ)音API_KEY

SECRET_KEY = 你的百度語(yǔ)音SECRET_KEY

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

print('語(yǔ)音提醒:', weather_forecast_txt)

#百度語(yǔ)音合成

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模塊播放語(yǔ)音

playsound.playsound(r'C:\Users\ban\Desktop\bsy\sound2.mp3')

#未來(lái)四天天氣變化圖

def Future_weather_states(forecast):

future_forecast = forecast

dict={}

#獲取未來(lái)四天天氣狀況

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('最近幾天溫度變化趨勢(shì)')

plt.show()

#主函數(shù)

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、最終效果

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的python天气预报的功能介绍_python实现智能语音天气预报的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。