python基础 bug相关
bug常见类型
序号
|
异常类型
|
描述
|
1
|
ZeroDivisionError
|
除(或取模)零(所有数据类型)
|
2
|
IndexError
|
序列中没有此索引(index)
|
3
|
KeyError
|
映射中没有这个键
|
4
|
NameError
|
未声明\初始化对象(没有属性)
|
5
|
SyntaxError
|
Python语法错误
|
6
|
ValueError
|
传入无效的参数
|
粗心导致语法错误syntaxError
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # bug # 错误代码 age = input ( '年龄:' ) if age > = 18 : print ( '成年人' ) # 正确代码 age = input ( '年龄:' ) if int (age) > = 18 : print ( '成年人' ) # 错误代码 while i < 10 : print (i) # 正确代码 i = 0 while i < 10 : print (i) i + = 1 # 错误代码 for i in range ( 3 ): uname = input ( '账号:' ) psw = input ( "密码:" ) if uname = 'a' and psw = 'b' : continue # 正确代码 for i in range ( 3 ): uname = input ( '账号:' ) psw = input ( "密码:" ) if uname = = 'a' and psw = = 'b' : continue |
自查方法
1.检查末位冒号,如if语句、循环语句等
2.检查缩进
3.检查是否含有中文符号
4.字符串拼接的时候,是否把字符串与数字拼接
5.检查有没有定义变量
6.比较运算符‘==’和赋值运算符‘=’的混用知识点
不熟练导致错误
索引越界问题IndexError
列表追加错误NameError、TypeError
1 2 3 4 5 6 7 8 9 10 11 12 13 | # IndexError lst = [ 1 , 2 , 3 , 4 ] print (lst[ 4 ]) #NameError lst = [] lst = append( '1' ) print (lst) # TypeError lst = [] lst.append( '1' , '2' ) print (lst) |
例外情况
1 2 3 4 5 | # 例外情况 a = input ( "请输入整数:" ) b = input ( "请输入整数:" ) c = int (a) / int (b) print (c) |
不同异常类型的处理方式
1 2 3 4 5 6 7 8 9 | try : a = input ( "请输入整数:" ) b = input ( "请输入整数:" ) c = int (a) / int (b) print (c) except ZeroDivisionError: print ( "输入有误,请输入非0整数" ) except ValueError: print ( "输入有误,请输入数字" ) |
异常处理机制
多个except结构
捕获异常的顺序按照先子类后父类,为了避免一楼可能出现的异常,可以在最后增加BaseException
1 2 3 4 5 6 7 8 9 10 11 | try : a = input ( "请输入整数:" ) b = input ( "请输入整数:" ) c = int (a) / int (b) print (c) except ZeroDivisionError: print ( "输入有误,请输入非0整数" ) except ValueError: print ( "输入有误,请输入数字" ) except BaseException as e: print (e) |
try..except..else结构
如果try块没有抛出异常,则执行else块,如果try中抛出异常,则执行except块
1 2 3 4 5 6 7 8 9 10 11 12 13 | # try..excepy..else结构 try : a = input ( "请输入整数:" ) b = input ( "请输入整数:" ) c = int (a) / int (b) except ZeroDivisionError: print ( "输入有误,请输入非0整数" ) except ValueError: print ( "输入有误,请输入数字" ) except BaseException as e: print (e) else : print ( "结果为:" , c) |
try..excepy..else..final结构
finally块无论是否发生异常都会被执行,能常用来释放try块中申请的资源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # try..excepy..else..final结构 try : a = input ( "请输入整数:" ) b = input ( "请输入整数:" ) c = int (a) / int (b) except ZeroDivisionError: print ( "输入有误,请输入非0整数" ) except ValueError: print ( "输入有误,请输入数字" ) except BaseException as e: print (e) else : print ( "结果为:" , c) finally : print ( "程序结束" ) |
Traceback模块的使用
1 2 3 4 5 6 | import traceback try : print ( "..." ) print ( 1 / 0 ) except : traceback.print_exc() |
pycharm的调试模式
断点:程序运行到此暂时挂起,停止执行。此时可以详细观察程序的运行情况方便做出进一步的判断

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报