Maison > Article > développement back-end > Explication détaillée de la solution d'erreur python-bilibili
Avant d'obtenir le numéro de chambre, nous résolvons d'abord le bug laissé dans l'article précédent, c'est-à-dire le problème causé par le fait que le numéro de chambre saisi n'est pas un numéro et que le numéro de chambre correspondant n'existe pas.
Le numéro de chambre saisi n'est pas un nombre :
En python, ce que vous saisissez doit être une chaîne Bien que vous saisissiez un nombre, le type est toujours str.
roomId = input('请输入房间号:')
En utilisant le code de l'article précédent, testons-le
En python, uniquement Seuls ceux du même type peut être connecté avec "+", donc le code de notre article précédent peut également être modifié en
roomUrl = 'http://live.bilibili.com/'+ roomId
Maintenant que nous avons élargi nos connaissances, résolvons le problème maintenant. Il existe des méthodes de traitement de chaînes dans le puissant Python. Il ne nous reste plus qu'à déterminer si les caractères saisis sont des nombres. L’appel de la fonction isdigit() peut compléter l’exigence. Il existe d'autres méthodes de traitement de chaînes que je vais trier et publier sur le blog.
isdigit() Signification : renvoie True si la chaîne ne contient que des chiffres, sinon renvoie False.
Le programme se termine une fois le jugement terminé. Ce n'est pas ce que nous voulons. Ce dont nous avons besoin, c'est d'un jugement infini. Si ce n'est pas un nombre, nous devons revenir en arrière et le ressaisir. un certain nombre, nous devons passer à l'étape suivante.
Idées :
1. Entrez le numéro de la chambre.
2. Déterminez si l'entrée est un nombre.
3. S'il s'agit d'un numéro, passez à l'étape suivante ; si ce n'est pas un numéro, saisissez-le à nouveau.
4. Une fois la saisie terminée, jugez à nouveau, puis faites un cycle.
Code :
roomId = input('请输入房间号:')while not roomId.isdigit(): print("数字格式错误,请重新输入!") roomId = input('请输入房间号:') roomUrl = 'http://live.bilibili.com/'+ str(roomId)
Rendu :
Regardez le rendu, numéro de chambre Il doit également être ressaisi s'il est vide, et la forme des chiffres et des lettres doit également être ressaisie. S'il répond à nos besoins, nous continuerons à résoudre le prochain bug.
La salle saisie n'existe pas (c'est-à-dire que l'URL n'existe pas) :
Ceci sert à la gestion des exceptions du programme. Il nous suffit de trouver la cause de l'erreur du programme.
Concentrez-vous sur la dernière phrase, urllib.error.HTTPError : HTTP Error 404 : Not Found
Page Web 404, aucune page Web trouvée. Cela signifie que l'adresse Web que vous avez saisie n'existe pas. Utilisez try-sauf pour résoudre cette erreur.
Idées :
1. Lorsque vous accédez à un site Web, vous ne savez pas s'il est là ou non
2. Essayez d'accéder à cette adresse
3. Si vous faites une erreur, vous devez ressaisir l'URL 4. Pour ressaisir l'URL, vous devez commencer par saisir le numéro de la chambre 5. Le grand la boucle, c'est quand l'URL est fausse au début, et la petite boucle consiste à déterminer le numéro de la chambre 6, l'URL saisie existe, alors vous devez sortir de cette grande boucle Code :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('出错啦!')Cependant, l'expérience utilisateur n'est pas très bonne et nous ne savons pas ce qui n'a pas fonctionné, nous apportons donc les raisons spécifiques sont
except urllib.error.HTTPError as reason: print('网址出错啦!'+ str(reason))Rendu :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!