Python基础 异常 常见的Bug类型 捕获异常

简介: Bug的常见类型及其处理方式,异常的处理方式,异常的调试方式


Bug的常见类型
一、粗心导致的语法错误SyntaxError
1、

age=input('请输入你的年龄:')
if age>=18:

print("成年人做事需要。。。。")

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

因为input输入返回值是字符串所以无法与整数类型数字比较

解决办法: 在input前面加上int(),把input输入的数转为整数类型,就可以比较数据了

age=int(input('请输入你的年龄:'))
if age>=18:

print("成年人做事需要。。。。")

2、

while i<10:

print (i)

循环语句报错,错误原因,没有循环变量初始值,也没有循环变量的递增,然后使用括号不规范,使用的中文的括号

解决方法: 添加虚幻变量的初始值,添加循环变量的递增,将不规范的括号改正(使用中文括号)

循环要有三要素

i=1 #循环变量的起始值
while i < 10: #循环的条件语句

print(i)
i+=1   #变量的递增

3、

for i in range(3):

uname =input("请输入用户名:")
upwd=input("请输入密码:")
if uname="admin" and upwd=pwd:
    print("登陆成功!")
else
    print("输入有误")

else

print("对不起,三次均输入错误")

报错,SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

错误多处,=是赋值,==才是比较,if语句比较时使用了=赋值语句,所以出错,还有就是未定义比较的内容admin然后就是else语句后面未加:

解决方法: 在if语句比较处将=换成==,因为=是赋值,==是比较,还有就是在循环开始前加上用来比较的变量,然后再else语句后加上冒号:

admin="hua"
pwd="123456"
for i in range(3):

uname =input("请输入用户名:")
upwd=input("请输入密码:")
if uname==admin and upwd==pwd:
    print("登陆成功!")
else:
    print("输入有误")

else:

print("对不起,三次均输入错误")

粗心导致错误的自查宝典:
1、漏了末尾的冒号,如if语句,循环语句,else子句等。
2、缩进错误,该缩进的没缩进,不该缩进的却缩进了。
3、把英文符号写成中文符号没比如说:引号,冒号,括号
4、字符串拼接的时候,把字符串和数字拼接在一起
5、没有定义变量,比如说while的循环条件变量
6、"=="比较运算符和"="赋值运算符的混用
二、知识不熟练导致的错误Bug
1、索引越界问题 IndexError
lst=[11,22,33,44]
print(lst[4])

错误,IndexError: list index out of range 索引越界,虽然有四个数,但索引不是从一开始算,正索引是从0开始算,负索引是从-1开始算

解决办法: 改写为正确的索引

lst=[11,22,33,44]
print(lst[3])
2、

lst=[]
lst=append("A","B","C")
print((lst))

报错,NameError: name 'append' is not defined 错误的方法使用append()函数

解决方法,掌握正确的使用函数的技巧,使用函数不是使用=调用,而是使用.去调用函数,并且append()函数一次只能增加一个元素

lst=[]
lst.append("A")
lst.append("B")
lst.append("C")
print((lst)) #返回值['A', 'B', 'C']

知识点掌握不熟练的导致的错误,唯一的解决方法就是练练练

三、思路不清晰导致的问题解决方案

1、使用print()函数
将出错的代码用print输出,将有问题的代码注释掉,一步一步的调试,最后将想要的结果输出
2、使用"#"暂时注销部分代码

解决方法:多加练习,掌握基础知识
四、被动掉坑:程序代码逻辑没有错,知识因为用户错误操作或者一些"例外情况"而导致的程序崩溃

被动掉坑问题的解决方案

python提供了异常处理机制,可以在异常出现时即使补货,然后内部消化,让程序继续运行

异常捕获处理 try: except xxx:语句 xxx为错误类型

try:用于放入容易出错的代码
except用于处理异常并正常输出后续代码,可以使代码不会报错结束,可以出现多个except语句来处理多种异常类型。
使用方式:
try:
将容易出错的代码放入其中
易出错代码
易出错代码
except 可能出现的类型:
print(捕获异常后用于提示的话语)
except 可能出现的类型:
print(捕获异常后用于提示的话语)

一般代码

a=int(input("请输入第一个整数:"))
b=int(input("请输入第二个整数:"))
result=a/b
print("结果为:",result)

极容易出现报错,导致终止后面的程序,比如整除不能输入0,不能输入英文,只要输入了,那么就会报错结束程序

所以就需要使用到try: except

try: #将易错代码放进去

a=int(input("请输入第一个整数:"))
b=int(input("请输入第二个整数:"))
result=a/b
print("结果为:",result)

except ZeroDivisionError: #不允许被0除的异常(异常类型在程序报错时会出现,将这种异常类型放入后,出现该异常就会自动处理,而不会报错终止程序)

print("对不起,除数不允许为0")  #出现该异常后的提示

except ValueError: #输入异常,int括号里的input只能输入数字串,不能输入字符串

print("只能输入数字串")   #出现该异常后的提示

print("程序结束") #程序可能出现的异常都用except写出来了,所以不管出现什么异常,后面的程序一样运行

相关文章
|
5月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
356 1
|
6月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
508 1
|
6月前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
326 102
|
7月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
716 3
|
7月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
249 0
|
7月前
|
IDE API 开发工具
Python类型注解:让代码“开口说话”的隐形助手
Python类型注解为动态语言增添类型信息,提升代码可读性与健壮性。通过变量、函数参数及返回值的类型标注,配合工具如mypy、IDE智能提示,可提前发现类型错误,降低调试与协作成本。本文详解类型注解的实战技巧、生态支持及最佳实践,助你写出更高质量的Python代码。
283 0
|
10月前
|
Python
Python技术解析:了解数字类型及数据类型转换的方法。
在Python的世界里,数字并不只是简单的数学符号,他们更多的是一种生动有趣的语言,用来表达我们的思维和创意。希望你从这个小小的讲解中学到了有趣的内容,用Python的魔法揭示数字的奥秘。
223 26
|
10月前
|
人工智能 安全 IDE
Python 的类型安全是如何实现的?
本文探讨了 Python 的类型安全实现方式。从 3.5 版本起,Python 引入类型提示(Type Hints),结合静态检查工具(如 mypy)和运行时验证库(如 pydantic),增强类型安全性。类型提示仅用于开发阶段的静态分析,不影响运行时行为,支持渐进式类型化,保留动态语言灵活性。泛型机制进一步提升通用代码的类型安全性。总结而言,Python 的类型系统是动态且可选的,兼顾灵活性与安全性,符合“显式优于隐式”的设计哲学。
226 2
|
Java Python
Python基础 | 深浅拷贝问题、递归函数练习
在实际工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题。为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用。为了生成这个副本,就产生了拷贝。下面先了解一下几个概念:对象、可变类型、引用
481 0
Python基础 | 深浅拷贝问题、递归函数练习
|
Python
python——基础练习(五)
python——基础练习(五)
272 0
python——基础练习(五)

推荐镜像

更多