Python常见报错
-
语法错误(SyntaxError)
原因:代码不符合 Python 语法规则。
示例:
print("Hello World" # 缺少右括号
报错信息:SyntaxError: unexpected EOF while parsing
解决:检查括号、引号、冒号等是否配对,或是否遗漏了语法符号。 -
缩进错误(IndentationError)
原因:代码缩进不一致(Python 依赖缩进定义代码块)
示例:
if True:
print("缩进错误") # 缺少缩进
报错信息:IndentationError: expected an indented block
解决:统一使用空格(推荐 4 个空格)或制表符(Tab),不要混用。 -
名称错误(NameError)
原因:使用了未定义的变量或函数名。
示例:
print(var) # var 未定义
报错信息:NameError: name 'var' is not defined
解决:检查变量名是否拼写错误,或确保变量在使用前已赋值。 -
类型错误(TypeError)
原因:操作或函数应用于不兼容类型的对象。
示例:
num = 10 + "20" # 整数和字符串相加
报错信息:TypeError: unsupported operand type(s) for +: 'int' and 'str'
解决:确保操作数类型一致,必要时使用类型转换(如 str()、int())。 -
索引错误(IndexError)
原因:访问列表、元组或字符串的索引超出范围。
示例:
lst = [1, 2, 3]
print(lst[3]) # 最大索引为 2
报错信息:IndexError: list index out of range
解决:检查索引是否在 0 到 len(列表)-1 范围内。 -
键错误(KeyError)
原因:访问字典中不存在的键。
示例:
d = {"name": "Alice"}
print(d["age"]) # 键 "age" 不存在
报错信息:KeyError: 'age'
解决:使用 d.get("age", default_value) 或检查键是否存在(if "age" in d)。 -
属性错误(AttributeError)
原因:对象没有某个属性或方法。
示例:
s = "hello"
s.append("!") # 字符串没有 append 方法
报错信息:AttributeError: 'str' object has no attribute 'append'
解决:检查对象类型是否支持该属性(如字符串不可变,不能用 append)。 -
模块未找到错误(ModuleNotFoundError)
原因:导入不存在的模块或未安装第三方库。
示例:
import numpyx # 拼写错误或未安装
报错信息:ModuleNotFoundError: No module named 'numpyx'
解决:检查模块名拼写,或通过 pip install 模块名 安装。 -
值错误(ValueError)
原因:函数参数类型正确但值不合法。
示例:
num = int("abc") # 字符串无法转为整数
报错信息:ValueError: invalid literal for int() with base 10: 'abc'
解决:检查输入值是否符合函数要求(如确保字符串是数字)。 -
零除错误(ZeroDivisionError)
原因:试图用 0 作为除数。
示例:
result = 10 / 0
报错信息:ZeroDivisionError: division by zero
解决:添加条件判断避免除数为 0。
其他常见错误
FileNotFoundError
原因:打开不存在的文件。
解决:检查文件路径和名称是否正确。
AssertionError
原因:assert 语句条件不满足。
解决:检查断言条件或调试代码逻辑。
UnboundLocalError
原因:函数内局部变量未赋值就被使用。
解决:使用 global 关键字或在函数内先赋值。
ImportError
原因:导入模块中的子模块或函数失败。
解决:检查模块结构或依赖是否完整。
RecursionError
原因:递归深度超出系统限制。
解决:优化递归终止条件,或改用循环。
浙公网安备 33010602011771号