1、Bug常见类型
(1)粗细导致的语法错误
改正后的代码:
age = input('请输入年龄:')
if int(age) > 18: # TypeError: '>' not supported between instances of 'str' and 'int'
print('你已经成年了!')
i = 1 # i需要定义
while i < 10:
print(i) # 英文括号
i += 1 # 结束循环的条件
(2)知识不熟练导致的错误
改正后的代码:
lst=[11,22,33,44]
# print(lst[4]) # 越界 IndexError: list index out of range
print('44的索引为:',lst.index(44))
lst1=[]
lst1.append('A') # 每次只可以在末尾添加一个元素
lst1.append('B')
lst1.append('C')
print(lst1)
lst2=['a','b','c']
lst1.extend(lst2)
print(lst1)
(3)思路不清楚导致的错误
改正后的代码:
lst=[{'rating':[9.7,50],'id':'1292052','type':['犯罪','剧情'],'title':'肖申克的救赎','actors':['蒂姆.罗宾斯','摩根.弗里曼']},
{'rating':[9.6,50],'id':'1291546','type':['剧情','爱情','同性'],'title':'霸王别姬','actors':['张国荣','张丰毅','巩俐','葛优']},
{'rating':[9.6,50],'id':'1296141','type':['剧情','犯罪','悬疑'],'title':'控方证人','actors':['泰降.鲍华','玛琳,黛德丽']}]
name=input('请输入你要查询的演员:')
for item in lst:
# print(item['actors'])
if name in item['actors']:
print(name+'主演了:'+item['title'])
(4)被动掉坑导致的错误
改正后的代码:
print('--------被动掉坑导致的错误------------')
try:
a=int(input('请输入一个整数:'))
b=int(input('请输入另一个整数:'))
c=a/b
print(c)
except ValueError:
print('不能输入字母哦!')
except ZeroDivisionError:
print('0不能为除数哦!')
2、常见的异常类型
3、异常处理机制
print('--------被动掉坑导致的错误------------')
try:
a=int(input('请输入一个整数:'))
b=int(input('请输入另一个整数:'))
c=a/b
except BaseException as e:
print('出错了!', e)
else:
print('结果为:', c)
finally:
print('程序结束!')
traceback模块的使用
import traceback
try:
print('-----------------')
print(1/0)
except:
traceback.print_exc()