Python 课程学习笔记(10)Bug

第十一章 Bug

96. Bug的由来

97. Bug的常见类型—粗心导致的错误SyntaxError

98. Bug的常见类型—错误点不熟悉导致的错误

99. ☆Bug的常见类型—思路不清导致的错误

100. Bug的常见类型—被动掉坑导致的错误

101. try-except-else结构与try-else-finally结构

102. Python中常见的异常类型

103. traceback模块的使用

104. PyCharm的程序调试


96. Bug的由来

(1)Bug的由来 世界上第一部万用计算机的进化版-马克2号(Mark Ⅱ)

(2)Debug

 

97. Bug的常见类型—粗心导致的错误SyntaxError

(1)三个例子

① input 输入类型为str

TypeError: '>=' not supported between instances of 'str' and 'int'

② i 未赋值,且采用了中文输入的 括号

③ “=="比较运算符和"="赋值运算符的混用

print('--------------------97.Bug的常见类型—粗心导致的错误------------------')
print('--(1)--')
age=int(input('输入年龄'))    #str 类型转换为 int
if age>=18:
    print('你已经成年')

'''法二:也可以
age=input('输入年龄')
if age>='18':            #加引号
    print('你已经成年')'''
print('--(2)--')
i=1
while i <3:
    print(i)
    i+=1

--------------------97.Bug的常见类型—粗心导致的错误------------------
--(1)--
输入年龄28
你已经成年
--(2)--
1
2

(2)粗心导致错误的自查宝典

① 漏了末尾的冒号,如if语句,循环语句,else子句等

缩进错误,该缩进的没缩进,不该缩进的瞎缩进

③ 把英文符号写成中文符号,比如说.引号,冒号,括号

④ 字符串拼接的时候,把字符串和数字拼在一起

⑤ 没有定义变量,比如说while的循环条件的变量

⑥ “=="比较运算符和"="赋值运算符的混用

 

98. Bug的常见类型—错误点不熟悉导致的错误

(1)两个例子

① 索引越界问题 IndexError

② append()方法的使用掌握不熟练

(2)错误点不熟悉导致的自查宝典

勤加练习!!!

 

99. ☆Bug的常见类型—思路不清导致的错误

思路不清导致的解决方案

(1)使用print() 函数

(2)使用' # " 暂时注释部分代码

例题要求:豆瓣电影Top250 排行,使用列表存储电影信息,要求输入名字在屏幕上显示xxx出演了哪部电影。

print('--------------------99.Bug的常见类型—思路不清导致的错误------------------')
print('''题目要求:
豆瓣电影Top250 排行,使用列表存储电影信息,
要求输入名字在屏幕上显示xxx出演了哪部电影。''')

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:
    #actors_lst=item['actors']
    #for actor in actors_lst:
    for actor in item['actors']:
        if name == actor:
            print(name+'出演了:'+item['title'])

--------------------99.Bug的常见类型—思路不清导致的错误------------------
题目要求:
豆瓣电影Top250 排行,使用列表存储电影信息,
要求输入名字在屏幕上显示xxx出演了哪部电影。
演员名张国荣
张国荣出演了:霸王别姬

100. Bug的常见类型—被动掉坑导致的错误

(1)被动掉坑程序代码逻辑没有错,只是因为用户错误操作或者一些“例外情况"而导致的程序崩溃

·题目要求:输入两个整数并进行除法运算

如:错把字母作为数字输入,错把0输入为分母;

(2)被动掉坑问题的解决方案

·Python提供了异常处理机制,可以在异常出现时即时捕获,然后内部“消化,让程序继续运行

·当出现一个异常时:try…except…

·当出现多个异常时:try…except…except…

print('--------------------100.Bug的常见类型—被动掉坑导致的错误------------------')
try:
    a = int(input('请输入第1个整数'))
    b = int(input('请输入第2个整数'))
    result = a / b
    print('结果为', result)
except ZeroDivisionError:
    print('除数不能为0')
except ValueError:
    print('只能输入数字串')
print('程序结束')

 --------------------100.Bug的常见类型—被动掉坑导致的错误------------------
请输入第1个整数2
请输入第2个整数3
结果为 0.6666666666666666
程序结束

101. try-except-else结构与try-else-finally结构

(1)try...except...else结构:如果try块中没有抛出异常,则执行else块,如果try块中抛出异常,则执行except块

 


print('--------------------101.try-except-else结构与try-else-finally结构------------------')
try:
    a = int(input('请输入第1个整数'))
    b = int(input('请输入第2个整数'))
    result = a / b
except BaseException as e:
    print('出错了',e)
else:
    print('结果为', result)
print('程序结束')

 --------------------101.try-except-else结构与try-else-finally结构------------------
请输入第1个整数e
出错了 invalid literal for int() with base 10: 'e'
程序结束

 (2)try...except...else...finally结构:finally块无论是否发生异常都会被执行,能常用来释放try块中申请的资源

try:
    a = int(input('请输入第1个整数'))
    b = int(input('请输入第2个整数'))
    result = a / b
except BaseException as e:
    print('出错了',e)
else:
    print('结果为', result)
finally:
   print('谢谢您的使用')

 请输入第1个整数r
出错了 invalid literal for int() with base 10: 'r'
谢谢您的使用

102. Python中常见的异常类型

序号

异常类型

描述

1

ZeroDivisionError

除(或取模)零(所有数据类型)

2

lndexError

序列中没有此索引(index)

3

KeyError

映射中没有这个键

4

NameError

未声明/初始化对象(没有属性)

5

SyntaxError

Python语法错误

6

ValueError

传入无效的参数

 

103. traceback模块的使用

 使用traceback 模块打印异常信息

import traceback
try:
    print('--------')
    print(1/0)
except:
    traceback.print_exc()

104. PyCharm的程序调试

(1)断点

程序运行到此处,暂时挂起,停止执行。此时可以详细观察程序的运行情况,方便做出进一步的判断

(2)进入调试视图——三种方式

① 单击工具栏上的按钮    

② 右键单击编辑区、点击.debug'模块名

③ 快捷键:shift+F9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值