首頁 >後端開發 >Python教學 >詳解python - bilibili出錯的解決辦法

詳解python - bilibili出錯的解決辦法

高洛峰
高洛峰原創
2017-03-27 15:46:323560瀏覽

在取得房間號碼之前我們先解決上篇文章遺留的bug,即輸入的房間號碼不是數字和對應的房間號碼不存在而產生的問題。

輸入的房間號碼不是數字:

在python中,你所輸入的必定是字串,雖然你輸入的是數字,但類型還是str。


roomId = input('请输入房间号:')

運用上一篇文章的程式碼,我們來測試一下

详解python - bilibili出错的解决办法

在python中,只有同一型的才能用"+"來連接,所以我們上一篇文章的程式碼也可以改成


roomUrl = 'http://live.bilibili.com/'+ roomId

拓展知識完畢,現在來解決問題。強大的python中有字串處理的方法,現在我們只需要判斷所輸入的字元是不是數字就行。呼叫isdigit()函數即可完成需求。還有其他的字串處理方法我會整理出來發到部落格。

isdigit() 意義:如果字串只含有數字則傳回True,否則傳回 False。

判斷完畢後程式就結束了,這是不是我們想要的,我們需要的是無限判斷,不是數字的話就要返回去重新輸入,是數字則要進行下一步。

想法:

1、輸入房間號碼。

2、判斷所輸入的是不是數字。

3、是數字則進行下一步;不是數字要重新輸入。

4、輸入完畢後再判斷,由此循環。

程式碼:


roomId = input('请输入房间号:')while not roomId.isdigit():     
print("数字格式错误,请重新输入!")
     roomId = input('请输入房间号:')
roomUrl = 'http://live.bilibili.com/'+ str(roomId)

效果圖:

详解python - bilibili出错的解决办法

看效果圖,房間號碼是空也需要重新輸入,數字加字母的形式也需要重新輸入,滿足我們的需求呢,我們繼續解決下一個bug。

輸入的房間不存在(即網址不存在):

這個是屬於程式異常處理方面,我們只需要找出程式的報錯原因即可。

详解python - bilibili出错的解决办法

重點看最後一句,urllib.error.HTTPError: HTTP Error 404: Not Found

網頁404,找不到網頁。說明你輸入的網頁位址不存在。使用try-except來解決這個錯誤。

 思路:

1、存取一個網址是並不知道它在不在

2、試著存取這個位址

3、出錯則需要重新輸入網址

4、重新輸入網址需要從輸入房間號碼開始

5、大循環是一開始到網址出錯,小循環就是判斷房間號碼

6 、輸入的網址存在,那麼就需要跳出這個大循環了

代碼:

while True:
     roomId = input('请输入房间号:')
     while not roomId.isdigit():
          print("数字格式错误,请重新输入!")
          roomId = input('请输入房间号:')
     roomUrl = 'http://live.bilibili.com/'+ str(roomId)

     try:
          webPage=urllib.request.urlopen(roomUrl)
          break
     except:
          print('出错啦!')

不過,這樣用戶體驗不太好,並不知道哪裡出錯了,所以我們帶上具體原因


except urllib.error.HTTPError as reason:          
print('网址出错啦!'+ str(reason))

效果圖:

详解python - bilibili出错的解决办法

 

以上是詳解python - bilibili出錯的解決辦法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn