Python学习 第7章-异常处理

本章内容:

> Bug常见类型

  • 粗心导致的语法错误,解决方案:查看自查宝典
  • 知识点不熟悉导致的错误,解决方案:不断的练习
  • 思路不清导致的错误,解决方案:使用print(语句和注释
  • 代码逻辑没错,用户操作不正确导致的错误,解决方案:使用异常处理机制

> 异常处理机制的几种结构

> PyCharm调试的步骤

• try-except

• 设置断点

• try-except-except

• 单步运行

• try-except-except-else

• 观察变量

• try-except-except-else-finally

• 查找问题

• 重新调试,直至问题解决

本章实例:

示例7-1粗心导致的语法错误SyntaxError

# 第一段代码
age=input('请输入你的年龄:')
if age>"18"
    print('成年人,做事需要负法律责任了!')

# 第二段代码
i=1
while i<10:
    print(i)
    i+=1

# 第三段代码
for i in range (3):
    uname=input('请输入用户名:')
    pwd=input('请输入密码:')
    if uname= 'admin' and pwd='admin':
        print('登录成功!')
        break
    else:
        print('输入有误!')
else:
    print('对不起,三次均输入错误')

示例7-2修改示例7-1中的语法错误

# 第一段代码
age=input('请输入你的年龄:')
if age>"18":
    print('成年人,做事需要负法律责任了!')

# 第二段代码
i=1
while i<10:
    print (i)
    i+=1

# 第三段代码
for i in range (3):
    uname=input('请输入用户名:')
    pwd=input('请输入密码:')
    if uname=='admin' and pwd=='admin':
        print('登录成功!')
        break
    else:
        print('输入有误!')
else:
    print('对不起,三次均输入错误')

示例7-3知识点掌握不熟练导致的错误

# 第一段代码
lst=[11,22,33,44]
print(lst[4])

# 第二段代码
lst=[]
lst=append('A','B','C')
print(lst)

示例7-4修改示例7-3中的错误

# 第一段代码
lst=[11,22,33,44]
print(lst[3])

# 第二段代码
lst=[]
lst.append('A')
lst.append('B')
lst.append('C')
print(lst)

示例7-5思路不清导致的问题

lst=[
    {'rating':[9.7,50],'id':'1292052','type':['犯罪','剧情'],'title':'肖申克的救赎','actors':['蒂姆.罗宾斯','摩根.弗里曼']},
    {'rating':[19.6,50],'id':'1291546','type':['剧情','爱情','同性'],'title':'霸王别姬','actors':['张国菜','张丰毅','巩俐','葛优']},
    {'rating':[9.6,50],'id':'1296141','type':['剧情','犯罪','怂疑'],'title':'控方证人','actors':['泰隆.鲍华','玛琳.黛德丽']},
]
name=input('请输入你要查询的演员:')
for item in lst:
    for movie in item:
        actors=movie ['actors']
        if name in actors:
            print(name,'出演了', movie)

示例7-6思路不清导致的问题解决方案

lst=[
    {'rating':[9.7,50],'id':'1292052','type':['犯罪','剧情'],'title':'肖申克的救赎','actors':['蒂姆.罗宾斯','摩根.弗里曼']},
    {'rating':[19.6,50],'id':'1291546','type':['剧情','爱情','同性'],'title':'霸王别姬','actors':['张国菜','张丰毅','巩俐','葛优']},
    {'rating':[9.6,50],'id':'1296141','type':['剧情','犯罪','怂疑'],'title':'控方证人','actors':['泰隆.鲍华','玛琳.黛德丽']},
]
name=input('请输入你要查询的演员:')
for item in lst:
    # for movie in item:
    #     actors=movie ['actors']
    #     if name in actors:
    #         print(name,'出演了', movie)
    print(item)
    actors_lst=item.get('actors')
    print(actors_lst)
    if name in actors_lst:
        title=item.get('title')
        print(title)
        print(name,'出演了',title,'电影')

示例7-8输入两个整数并进行除法运算

num1=int(input('请输入一个整数:'))
num2=int(input('请输入另一个整数:'))
result=num1/num2
print('结果:',result)

示例7-9try-except结构的使用

try:
    num1 = int(input('请输入一个整数:'))
    num2 = int(input('请输入另一个整数:'))
    result = num1 / num2
    print('结果:', result)
except ZeroDivisionError:
    print('除数为0')

示例7-10多个except结构

try:
    num1 = int(input('请输入一个整数:'))
    num2 = int(input('请输入另一个整数:'))
    result = num1 / num2
    print('结果:', result)
except ZeroDivisionError:
    print('除数不允许为0')
except ValueError:
    print('不能将字符串转换为数字')
except BaseException:
    print('未知异常')

示例7-11try-except-else结构

try:
    num1 = int(input('请输入一个整数:'))
    num2 = int(input('请输入另一个整数:'))
    result = num1 / num2
except  ZeroDivisionError:
    print('除数不允许为0')
except ValueError:
    print('不能将字符串转换为数字')
except BaseException:
    print('未知异常')
else:
    print('结果:', result)

示例7-12try-except-else-finally结构

try:
    num1 = int(input('请输入一个整数:'))
    num2 = int(input('请输入另一个整数:'))
    result = num1 / num2
except  ZeroDivisionError:
    print('除数不允许为0')
except ValueError:
    print('不能将字符串转换为数字')
except BaseException:
    print('未知异常')
else:
    print('结果:', result)
finally:
    print('程序执行结束!')

示例7-13raise关键字的使用

try:
    gender=input('请输入您的性别:')
    if gender!='男' and gender!='女':
        raise Exception('性别只能是男或女')
    else:
        print('您的性别是:',gender)
except Exception as e:
    print(e)

示例7-14常见异常类型的产生

# (1)ZeroDivisionError
# print(10/0)
# (2)IndexError
# lst[10,30,50,90]
# print(lst[4])
# (3)KeyError
# d={'name':'ysj','age':30}
# print(d['gender'])
# (4)NameError
# print(hello)
# (5) SyntaxError
# print('hello)
# (6) ValueError
# print(int('a'))
# (7)AttributeError
# i=10
# print(i.name)
# (8)TypeError
# print('hello'+123)
# (9)IndentationError
#     print('hello')

示例7-15被调试的代码

i=1
while i<10:
    print(i)

注:本文中的内容及示例均出自@Python_子木的视频。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值