Python異常之常見的Bug類型解決方法
一、粗心導(dǎo)致的語法錯(cuò)誤SyntaxError
1、input輸入報(bào)錯(cuò)
age=input('請(qǐng)輸入你的年齡:') if age>=18: ? ? print("成年人做事需要。。。。")
報(bào)錯(cuò):TypeError: '>=' not supported between instances of 'str' and 'int'
因?yàn)閕nput輸入返回值是字符串所以無法與整數(shù)類型數(shù)字比較
解決辦法: 在input
前面加上int()
,把input輸入的數(shù)轉(zhuǎn)為整數(shù)類型,就可以比較數(shù)據(jù)了
age=int(input('請(qǐng)輸入你的年齡:')) if age>=18: ? ? print("成年人做事需要。。。。")
2、循環(huán)語句報(bào)錯(cuò)
while i<10: ? ? print (i)
循環(huán)語句報(bào)錯(cuò):錯(cuò)誤原因,沒有循環(huán)變量初始值,也沒有循環(huán)變量的遞增,然后使用括號(hào)不規(guī)范,使用的中文的括號(hào)
解決方法: 添加虛幻變量的初始值,添加循環(huán)變量的遞增,將不規(guī)范的括號(hào)改正(使用中文括號(hào))
循環(huán)要有三要素:
?i=1 ? #循環(huán)變量的起始值 while i < 10: ? #循環(huán)的條件語句 ? ? print(i) ? ? i+=1 ? #變量的遞增
3、賦值報(bào)錯(cuò)
for i in range(3): ? ? uname =input("請(qǐng)輸入用戶名:") ? ? upwd=input("請(qǐng)輸入密碼:") ? ? if uname="admin" and upwd=pwd: ? ? ? ? print("登陸成功!") ? ? else ? ? ? ? print("輸入有誤") else ? ? print("對(duì)不起,三次均輸入錯(cuò)誤")
報(bào)錯(cuò):SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
錯(cuò)誤多處:=是賦值,==才是比較,if語句比較時(shí)使用了=賦值語句,所以出錯(cuò),還有就是未定義比較的內(nèi)容admin然后就是else語句后面未加:
解決方法: 在if語句比較處將=換成==,因?yàn)?是賦值,==是比較,還有就是在循環(huán)開始前加上用來比較的變量,然后再else語句后加上冒號(hào):
admin="hua" pwd="123456" for i in range(3): ? ? uname =input("請(qǐng)輸入用戶名:") ? ? upwd=input("請(qǐng)輸入密碼:") ? ? if uname==admin and upwd==pwd: ? ? ? ? print("登陸成功!") ? ? else: ? ? ? ? print("輸入有誤") else: ? ? print("對(duì)不起,三次均輸入錯(cuò)誤")
粗心導(dǎo)致錯(cuò)誤的自查寶典:
- 1、漏了末尾的冒號(hào),如if語句,循環(huán)語句,else子句等。
- 2、縮進(jìn)錯(cuò)誤,該縮進(jìn)的沒縮進(jìn),不該縮進(jìn)的卻縮進(jìn)了。
- 3、把英文符號(hào)寫成中文符號(hào)沒比如說:引號(hào),冒號(hào),括號(hào)
- 4、字符串拼接的時(shí)候,把字符串和數(shù)字拼接在一起
- 5、沒有定義變量,比如說while的循環(huán)條件變量
- 6、"=="比較運(yùn)算符和"="賦值運(yùn)算符的混用
二、知識(shí)不熟練導(dǎo)致的錯(cuò)誤Bug
1、索引越界問題 IndexError
lst=[11,22,33,44] print(lst[4])
錯(cuò)誤:IndexError: list index out of range 索引越界,雖然有四個(gè)數(shù),但索引不是從一開始算,正索引是從0開始算,負(fù)索引是從-1開始算
解決辦法: 改寫為正確的索引
lst=[11,22,33,44] print(lst[3])
2、append()函數(shù)的使用報(bào)錯(cuò)
lst=[] lst=append("A","B","C") print((lst))
報(bào)錯(cuò):NameError: name 'append' is not defined 錯(cuò)誤的方法使用append()函數(shù)
解決方法:掌握正確的使用函數(shù)的技巧,使用函數(shù)不是使用=調(diào)用,而是使用.去調(diào)用函數(shù),并且append()
函數(shù)一次只能增加一個(gè)元素
lst=[] lst.append("A") lst.append("B") lst.append("C") print((lst)) ?#返回值['A', 'B', 'C']
知識(shí)點(diǎn)掌握不熟練的導(dǎo)致的錯(cuò)誤,唯一的解決方法就是練練練
三、思路不清晰導(dǎo)致的問題解決方案
1、使用print()函數(shù)
將出錯(cuò)的代碼用print輸出,將有問題的代碼注釋掉,一步一步的調(diào)試,最后將想要的結(jié)果輸出
2、使用"#"暫時(shí)注銷部分代碼
解決方法:多加練習(xí),掌握基礎(chǔ)知識(shí)
四、被動(dòng)掉坑
程序代碼邏輯沒有錯(cuò),知識(shí)因?yàn)橛脩翦e(cuò)誤操作或者一些"例外情況"而導(dǎo)致的程序崩潰
被動(dòng)掉坑問題的解決方案:
python提供了異常處理機(jī)制,可以在異常出現(xiàn)時(shí)即使補(bǔ)貨,然后內(nèi)部消化,讓程序繼續(xù)運(yùn)行
異常捕獲處理 try: except xxx:語句 xxx為錯(cuò)誤類型
try
:用于放入容易出錯(cuò)的代碼
except用于處理異常并正常輸出后續(xù)代碼,可以使代碼不會(huì)報(bào)錯(cuò)結(jié)束,可以出現(xiàn)多個(gè)except語句來處理多種異常類型。
使用方式:
try:
將容易出錯(cuò)的代碼放入其中
易出錯(cuò)代碼
易出錯(cuò)代碼
except 可能出現(xiàn)的類型:
print(捕獲異常后用于提示的話語)
except 可能出現(xiàn)的類型:
print(捕獲異常后用于提示的話語)
一般代碼:
a=int(input("請(qǐng)輸入第一個(gè)整數(shù):")) b=int(input("請(qǐng)輸入第二個(gè)整數(shù):")) result=a/b print("結(jié)果為:",result)
極容易出現(xiàn)報(bào)錯(cuò),導(dǎo)致終止后面的程序,比如整除不能輸入0,不能輸入英文,只要輸入了,那么就會(huì)報(bào)錯(cuò)結(jié)束程序
所以就需要使用到try: except
try: ? ?#將易錯(cuò)代碼放進(jìn)去 ? ? a=int(input("請(qǐng)輸入第一個(gè)整數(shù):")) ? ? b=int(input("請(qǐng)輸入第二個(gè)整數(shù):")) ? ? result=a/b ? ? print("結(jié)果為:",result) except ZeroDivisionError: ? #不允許被0除的異常(異常類型在程序報(bào)錯(cuò)時(shí)會(huì)出現(xiàn),將這種異常類型放入后,出現(xiàn)該異常就會(huì)自動(dòng)處理,而不會(huì)報(bào)錯(cuò)終止程序) ? ? print("對(duì)不起,除數(shù)不允許為0") ?#出現(xiàn)該異常后的提示 except ValueError: ? ?#輸入異常,int括號(hào)里的input只能輸入數(shù)字串,不能輸入字符串 ? ? print("只能輸入數(shù)字串") ? #出現(xiàn)該異常后的提示 print("程序結(jié)束") ? ?#程序可能出現(xiàn)的異常都用except寫出來了,所以不管出現(xiàn)什么異常,后面的程序一樣運(yùn)行
到此這篇關(guān)于Python異常之常見的Bug類型解決方法的文章就介紹到這了,更多相關(guān)Python異常解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python遍歷文件夾和讀寫文件的實(shí)現(xiàn)方法
本篇文章主要介紹了Python遍歷文件夾和讀寫文件的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05windows下python虛擬環(huán)境virtualenv安裝和使用詳解
這篇文章主要介紹了windows下python虛擬環(huán)境virtualenv安裝和使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-07-07Pandas數(shù)據(jù)分析之groupby函數(shù)用法實(shí)例詳解
這篇文章主要為大家介紹了Pandas數(shù)據(jù)分析之groupby函數(shù)用法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Python數(shù)據(jù)可視化之繪制柱狀圖和條形圖
今天帶大家學(xué)習(xí)怎么利用Python繪制柱狀圖,條形圖,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05python輸出結(jié)果刷新及進(jìn)度條的實(shí)現(xiàn)操作
這篇文章主要介紹了python輸出結(jié)果刷新及進(jìn)度條的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07OpenCV實(shí)現(xiàn)手勢(shì)虛擬拖拽的使用示例(附demo)
本文主要介紹了OpenCV實(shí)現(xiàn)手勢(shì)虛擬拖拽的使用示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11