Python运行常见报错分类大全


 

一、语法类错误 SyntaxError(代码书写格式错误,运行前解析阶段直接报错)

代码不符合 Python 语法规则,解释器读不懂代码,程序完全无法启动

报错类型 触发原因 示例错误代码 报错信息
SyntaxError 括号/引号不匹配、少冒号、缩进混乱、关键字误用
if 1>0 print(1)
SyntaxError: expected ‘:’
SyntaxError 字符串引号混用未转义
s = "He said "hello""
SyntaxError: invalid syntax
SyntaxError 缩进错误混用空格Tab
def a():
    print(1)
  print(2)
SyntaxError: unindent does not match any outer indentation level
SyntaxError 非法赋值(给字面量赋值)
100 = x
SyntaxError: cannot assign to literal

二、名称/变量类错误 NameError(变量、函数未定义)

代码语法没问题,但使用了不存在的标识符

报错类型 触发原因 示例错误代码 报错信息
NameError 变量未定义直接使用
print(num)
NameError: name ‘num’ is not defined
NameError 函数未定义就调用
test()
NameError: name ‘test’ is not defined
NameError 局部变量作用域限制
def f():
    a=1
f()
print(a)
NameError: name ‘a’ is not defined

三、数据类型相关错误 TypeError(类型不匹配操作)

不同数据类型不能进行该运算/调用,类型冲突

报错类型 触发原因 示例错误代码 报错信息
TypeError 数字和字符串直接相加
print(10 + "20")
TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’
TypeError 函数传参数量不匹配
def add(a):return a+1
add(1,2)
TypeError: add() takes 1 positional argument but 2 were given
TypeError 不可迭代对象遍历
for i in 123:print(i)
TypeError: ‘int’ object is not iterable
TypeError 数字不可下标取值
a=99;print(a[0])
TypeError: ‘int’ object is not subscriptable

四、索引/键取值错误(容器操作:列表、字典、字符串)

4.1 IndexError 下标越界

列表、字符串下标超出有效范围

lst = [1,2,3]
print(lst[5])

报错:IndexError: list index out of range

4.2 KeyError 字典无对应键

访问字典不存在的key

d = {"name":"小明"}
print(d["age"])

报错:KeyError: 'age'

4.3 ValueError 值合法但不符合函数要求

数据类型正确,但数值内容不符合使用规则

示例代码 报错信息
int("abc")
ValueError: invalid literal for int() with base 10: ‘abc’
lst = [1,7,9]; lst.index(5)
ValueError: list.index(x): x not in list(两数之和遇到的报错)

五、零除与数学运算错误 ArithmeticError

ZeroDivisionError 除以0

print(10 / 0)

报错:ZeroDivisionError: division by zero

六、文件IO操作错误 OSError/FileNotFoundError

报错类型 错误代码 报错信息
FileNotFoundError
f = open("test.txt","r")

文件不存在

FileNotFoundError: [Errno 2] No such file or directory: ‘test.txt’
PermissionError 无权限读写目标文件 PermissionError: [Errno 13] Permission denied

七、模块导入错误 ImportError/ModuleNotFoundError

import xxxxxx

报错:ModuleNotFoundError: No module named 'xxxxxx'

八、属性访问错误 AttributeError

lst = [1,2]
lst.append2(3)
# 或
a = None
a.split()

报错:AttributeError: 'list' object has no attribute 'append2'

九、循环迭代相关 StopIteration

迭代器无更多元素仍取值

it = iter([1])
next(it)
next(it)

报错:StopIteration

十、内存/递归限制 RecursionError

递归深度超过Python默认限制

def f():
    f()
f()

报错:RecursionError: maximum recursion depth exceeded

十一、运行时通用异常 Exception 补充

1. AssertionError:断言失败

a = 5
assert a > 10

报错:AssertionError

2. IndentationError(SyntaxError子类):缩进错误

def test():
print(1)

报错:IndentationError: expected an indented block

3. UnicodeDecodeError:文件编码解码失败

open("中文文件.txt", encoding="ascii").read()

报错:UnicodeDecodeError: 'ascii' codec can't decode byte

十二、逻辑无报错但输出None(高频踩坑)

不属于程序异常,但业务结果错误,两数之和题目常遇到

原因

函数仅print,没有return返回数据

def twoSum(nums,target):
    for i in range(len(nums)):
        print([i,i+1])
# 调用接收结果
res = twoSum([1,2],3)
print(res) # 输出 None

 


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注