Bug一词的原意是“昆虫”或“虫子”;而在电脑系统或程序中隐藏着的一些未被发现的缺陷或问题,人们也叫它“bug”。
pythonage=input('请输入你的年龄')
print(type(age))
# if age >= 18 # 默认"input()"输入的类型都是str类型,需要转换int类型比较,还有结尾忘记写“:"了。
if int(age) >= 18:
print('你已经是成年人了')
i=0
while i < 10:
print(i)
i+=1 # 如果忘记改变i的变量,i就会一直是0,会陷入死循环
知识不熟练导致的错误,就需要多加练习了
pythonlst=[11,22,33,44]
# print(lst[4]) # 索引超出范围,列表的索引从0开始的,想输出第4个元素,索引应该填写3
print(lst[3])
lst=[]
# lst=append('A','B','C') # append()方法掌握不熟练,append一次只能添加一个元素,是lst的方法,不应该使用赋值运算符
lst.append('A')
lst.append('B')
lst.append('C')
print(lst)
思路不清晰导致的错误可以使用print()
函数打印输出,使用#
暂时注释掉部分代码。
题目要求:使用列表存储电影信息,要求输入名字显示xxx出演了哪部电影。
pythonlst=[{'rating':[9.7,2062397],'id':'1292052','type':['犯罪','剧情'],'title':'肖申克的救赎','actors':['蒂姆·罗宾斯','摩根·费里曼']},
{'rating':[9.6,1528760],'id':'1291546','type':['剧情','爱情','同性'],'title':'霸王别姬','actors':['张国荣','张丰毅','冯巩','葛优']},
{'rating':[9.5,155919],'id':'1292720','type':['爱情','剧情'],'title':'阿甘正传','actors':['汤姆·汉克斯','罗宾·怀特']}
]
'''思路不清晰的错误示例
name=input('请输入你要查询的演员名字:')
for item in lst: # 遍历列表
for movie in item:
print(movie)
actors=movie['actors']
if name in actors:
print(name+'出演了'+actors)'''
# 正确的思路代码
name=input('请输入你要查询的演员名字:')
for item in lst:
act_lst=item['actors']
if name in act_lst:
print(name+'出演了'+item['title'])
程序代码逻辑没有错,因为用户错误操作或一些”例外情况“而导致的程序崩溃。
题目要求:输入2个整数并运行除法运算
pythona=int(input('请输入第一个整数'))
b=int(input('请输入第二个整数'))
result=a/b
print('结果为',result)
请输入第一个整数20
请输入第二个整数0 # 0是不能作为除数的,所以会报错
Traceback (most recent call last):
File "D:\work\code\python\main.py", line 3, in <module>
result=a/b
ZeroDivisionError: division by zero
python提供了异常处理机制,可以在异常出现时即使捕获,让程序继续运行。
pythontry:
a=int(input('请输入第一个整数'))
b=int(input('请输入第二个整数'))
result=a/b
print('结果为',result)
except ZeroDivisionError: # 如果是ZeroDivisionError错误,会执行下面的代码
print('对不起,除数不允许为0')
except ValueError: # except的多分枝
print('对不起,只能输入数字串')
print('程序结束')
多个except结构,捕获异常的顺序按照先子类后父类的顺序,为了避免遗漏可能出现的异常,可以在最后增加BaseException。
pythontry:
a=int(input('请输入第一个整数'))
b=int(input('请输入第二个整数'))
result=a/b
print('结果为',result)
except BaseException as e: # 如果抛出异常执行except块
print('出错了',e)
else: # try块中没有抛出异常执行else
print('计算结果为',result)
finally: # 不论程序有没有抛出异常,都会执行finally
print('谢谢您的使用')
python常见的异常类型
序号 | 异常类型 | 描述 |
---|---|---|
1 | ZeroDivisionError | 除(或取模)零(所有数据类型) |
2 | IndexError | 序列中没有此索引(index) |
3 | KeyError | 映射中没有这个key |
4 | NameError | 未声明/初始化对象(没有属性) |
5 | SyntaxError | Python语法错误 |
6 | ValueError | 传入无效的参数 |
python# print(10/0) # ZeroDivisionError
lst=[11,22,33,44]
# print(lst[4]) # IndexError 索引从0开始,超出索引范围
dic={'name':'张三','age':20}
# print(dic['gender']) # KeyError key不存在
# print(num) # NameError
# int a=20 # SyntaxError
# a=int('hello') # ValueError
使用traceback模块打印异常信,可以把打印的异常信息存入到日志文件里。
pythonimport traceback
try:
print('---------')
print(1/0)
except:
traceback.print_exc()
断点:程序运行到此处,暂时挂起,停止执行,此时可以详细观察程序的运行情况,方便做出进一步的判断
进入调试视图三种方式
debug'模块名'
shift+F9
本文作者:柯南
本文链接:
版权声明:©2023 柯南 All rights reserved.