脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python异常之常见的Bug类型解决方法

Python异常之常见的Bug类型解决方法

2022-11-09 11:02Python-派大星 Python

这篇文章主要介绍了Python异常之常见的Bug类型解决方法,主要分享一些粗心导致和知识不熟练导致的语法错误以及被迫掉坑等内容,文章介绍非常详细需要的小伙伴可以参考一下

一、粗心导致的语法错误SyntaxError

1、input输入报错

?
1
2
3
age=input('请输入你的年龄:')
if age>=18:
    print("成年人做事需要。。。。")

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

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

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

?
1
2
3
age=int(input('请输入你的年龄:'))
if age>=18:
    print("成年人做事需要。。。。")

2、循环语句报错

?
1
2
while i<10:
    print (i)

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

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

循环要有三要素:

?
1
2
3
4
 i=1   #循环变量的起始值
while i < 10:   #循环的条件语句
    print(i)
    i+=1   #变量的递增

3、赋值报错

?
1
2
3
4
5
6
7
8
9
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语句后加上冒号:

?
1
2
3
4
5
6
7
8
9
10
11
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

?
1
2
lst=[11,22,33,44]
print(lst[4])

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

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

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

2、append()函数的使用报错

?
1
2
3
lst=[]
lst=append("A","B","C")
print((lst))

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

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

?
1
2
3
4
5
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(捕获异常后用于提示的话语)

一般代码:

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

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

所以就需要使用到try:  except

?
1
2
3
4
5
6
7
8
9
10
try:    #将易错代码放进去
    a=int(input("请输入第一个整数:"))
    b=int(input("请输入第二个整数:"))
    result=a/b
    print("结果为:",result)
except ZeroDivisionError:   #不允许被0除的异常(异常类型在程序报错时会出现,将这种异常类型放入后,出现该异常就会自动处理,而不会报错终止程序)
    print("对不起,除数不允许为0")  #出现该异常后的提示
except ValueError:    #输入异常,int括号里的input只能输入数字串,不能输入字符串
    print("只能输入数字串")   #出现该异常后的提示
print("程序结束")    #程序可能出现的异常都用except写出来了,所以不管出现什么异常,后面的程序一样运行

到此这篇关于Python异常之常见的Bug类型解决方法的文章就介绍到这了,更多相关Python异常解决内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_53466908/article/details/122780023

延伸 · 阅读

精彩推荐
  • PythonPython栈类实例分析

    Python栈类实例分析

    这篇文章主要介绍了Python栈类,实例分析了Python实现栈的入栈、出栈、移除、判定为空的相关技巧,需要的朋友可以参考下...

    小卒过河4922020-07-15
  • Pythonpytorch载入预训练模型后,实现训练指定层

    pytorch载入预训练模型后,实现训练指定层

    今天小编就为大家分享一篇pytorch载入预训练模型后,实现训练指定层,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    慕白-9932020-05-08
  • PythonPython supervisor强大的进程管理工具的使用

    Python supervisor强大的进程管理工具的使用

    这篇文章主要介绍了Python supervisor强大的进程管理工具的使用,本文主要跟大家分享在类unix操作系统下supervisor的使用以及一些关于进程的知识,具有一定的...

    陈家大耳10512021-06-19
  • PythonPython pytesseract验证码识别库用法解析

    Python pytesseract验证码识别库用法解析

    这篇文章主要介绍了Python pytesseract验证码识别库用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    Alpiny’ Blog11242020-06-29
  • Python关于Python错误重试方法总结

    关于Python错误重试方法总结

    在本篇文章里小编给网友们分享一篇关于关于Python错误重试方法总结内容,有需要的朋友们跟着学习参考下。...

    Huny7132021-08-20
  • PythonPython 如何操作 SQLite 数据库

    Python 如何操作 SQLite 数据库

    这篇文章主要介绍了Python 如何操作 SQLite 数据库,帮助大家更好的理解和学习,感兴趣的朋友可以了解下 ...

    Rocky04295422020-08-17
  • Pythonpyqt5中QThread在使用时出现重复emit的实例

    pyqt5中QThread在使用时出现重复emit的实例

    今天小编就为大家分享一篇pyqt5中QThread在使用时出现重复emit的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    coding上下求索4612021-07-17
  • PythonPython获取运行目录与当前脚本目录的方法

    Python获取运行目录与当前脚本目录的方法

    这篇文章主要介绍了Python获取运行目录与当前脚本目录的方法,涉及Python目录操作与系统相关变量的获取技巧,需要的朋友可以参考下...

    adupt10072020-07-10