智慧型聊天功能 天氣情況篇

2021-10-25 06:13:49 字數 3776 閱讀 8914

天氣預報已然成為人們生活中不可缺少的一部分,實時了解氣象的優劣,做到第一時間預防是至關重要的。所以,當我們需要外出時,如果能提前知道天氣的變化情況,做好預防準備措施,就能讓出行變得更加順利。

本系統為使用者提供播報天氣情況功能,每天出門前詢問「依公尺」當日的天氣情況,它便會告訴你當日溫度、能見度、風速等資訊,並給使用者一些出行建議,做好預防準備,智慧型家居讓出行變得更加簡單。具體實現流程如圖所示。

呼叫天氣情況功能的關鍵**如下:

1.	if

"天氣"

in recognition_result:

2. s=recognition_result.replace(

'。',''

) 3. s=recognition_result.replace(

'?',''

) 4. s=s.replace(

'請問',''

) 5. s=s.replace(

'的天氣怎麼樣',''

) 6. s=s.replace(

'天氣怎麼樣',''

"識別錯誤,請這樣問'某某天氣怎麼樣'"

) 14. voice.playvoice(url)

15. time.sleep(2)

16. break

17.	url_weather =

''+search+'?location='+index+'&key=301daef2824c41d9b3d6e0391011fd4d'

18. print(url_weather)

19. req = urllib2.request(url_weather)

20. resp = urllib2.urlopen(req)

21. context = resp.read(

) 22. weather_json = json.loads(context, encoding=

'utf-8'

)

通過呼叫接**們會得到很多資料,選取部分需要的資料即可。

根據需要我分別獲取了實況天氣、當日天氣和明日天氣情況。實況天氣的部分**如下:

23.	def get_wat(wt):  

24. city_weather_now = city_weather[

'now'

] 25. a= city_weather_now[

'cond_txt'

]#天氣狀況描述

26. b= numtozh(city_weather_now[

'pres'])

#氣壓

27. c= numtozh(city_weather_now[

'tmp'])

#溫度

28. d= numtozh(city_weather_now[

'vis'])

#能見度

29. e= city_weather_now[

'wind_dir'

]#風向

30. f= city_weather_now[

'wind_sc'

]#風力

31. g= numtozh( city_weather_now[

'wind_spd'])

#風速

32. weather_now_str =

"目前天氣,氣壓帕斯卡,溫度度,能見度,風向,風力,風速級;".format(a,b,c,d,e,f,g)

上述**返回的結果中包含某些機器難以識別的數字,這使得語音合成出來的效果有點差強人意,比如:-18℃等之類的資料。因此,需要對獲取結果中的特殊數字進行相關的處理。特殊數字處理的部分**如下:

#數字轉中文

def numtozh(num):

num_dict =

num = int(num)

if 100 <= num < 1000:

b_num = num // 100

s_num =

(num-b_num*100) // 10

g_num =

(num-b_num*100) % 10

if g_num == 0 and s_num == 0:

num =

'%s百' % (num_dict[b_num]

)elif s_num == 0:

num =

'%s百%s%s' % (num_dict[b_num], num_dict.get(s_num, ''

), num_dict.get(g_num, ''

))elif g_num == 0:

num =

'%s百%s十' % (num_dict[b_num], num_dict.get(s_num, ''

)) else:

num =

'%s百%s十%s' % (num_dict[b_num], num_dict.get(s_num, ''

), num_dict.get(g_num, ''

))elif 10 <= num < 100:

s_num = num // 10

g_num =

(num-s_num*10) % 10

if g_num == 0:

g_num =

'' num =

'%s十%s' % (num_dict[s_num], num_dict.get(g_num, ''

))elif 0 <= num < 10:

g_num = num

num =

'%s' % (num_dict[g_num]

)elif -10 < num < 0:

g_num = -num

num =

'零下%s' % (num_dict[g_num]

)elif -100 < num <= -10:

num = -num

s_num = num // 10

g_num =

(num-s_num*10) % 10

if g_num == 0:

g_num =

'' num =

'零下%s十%s' % (num_dict[s_num], num_dict.get(g_num, ''

))return num

爬蟲專案實戰八 爬取天氣情況

根據天氣介面,爬取接下來一周的天氣情況。開啟這個網頁。請輸入城市名稱 cityname input host cityname url host response requests.get url content response.text soup beautifulsoup content,lx...

02 微信小程式例項開發 天氣情況

wx.getlocation 通過官方文件的api中可以看到wx.getlocation可以獲取到當前的地理位置和速度,不過獲取到的地理位置只是經緯度,而不是真正的城市名稱,但我們可以根據這個經緯度來獲取城市名稱等資訊 需要用到第三方介面 再通過城市名稱和城市id獲取對應的天氣資訊。在.js邏輯層增...

免費的獲取最近幾天內的天氣情況

function vget url curl close curl 關閉curl會話 return tmpinfo 返回資料 獲取客戶端ip位址 param integer type 返回型別 0 返回ip位址 1 返回ipv4位址數字 ip位址合法驗證 long ip2long ip ip lon...