Python常见报错

  1. 语法错误(SyntaxError)
    原因:代码不符合 Python 语法规则。
    示例:
    print("Hello World" # 缺少右括号
    报错信息:SyntaxError: unexpected EOF while parsing
    解决:检查括号、引号、冒号等是否配对,或是否遗漏了语法符号。

  2. 缩进错误(IndentationError)
    原因:代码缩进不一致(Python 依赖缩进定义代码块)
    示例:
    if True:
    print("缩进错误") # 缺少缩进
    报错信息:IndentationError: expected an indented block
    解决:统一使用空格(推荐 4 个空格)或制表符(Tab),不要混用。

  3. 名称错误(NameError)
    原因:使用了未定义的变量或函数名。
    示例:
    print(var) # var 未定义
    报错信息:NameError: name 'var' is not defined
    解决:检查变量名是否拼写错误,或确保变量在使用前已赋值。

  4. 类型错误(TypeError)
    原因:操作或函数应用于不兼容类型的对象。
    示例:
    num = 10 + "20" # 整数和字符串相加
    报错信息:TypeError: unsupported operand type(s) for +: 'int' and 'str'
    解决:确保操作数类型一致,必要时使用类型转换(如 str()、int())。

  5. 索引错误(IndexError)
    原因:访问列表、元组或字符串的索引超出范围。
    示例:
    lst = [1, 2, 3]
    print(lst[3]) # 最大索引为 2
    报错信息:IndexError: list index out of range
    解决:检查索引是否在 0 到 len(列表)-1 范围内。

  6. 键错误(KeyError)
    原因:访问字典中不存在的键。
    示例:
    d = {"name": "Alice"}
    print(d["age"]) # 键 "age" 不存在
    报错信息:KeyError: 'age'
    解决:使用 d.get("age", default_value) 或检查键是否存在(if "age" in d)。

  7. 属性错误(AttributeError)
    原因:对象没有某个属性或方法。
    示例:
    s = "hello"
    s.append("!") # 字符串没有 append 方法
    报错信息:AttributeError: 'str' object has no attribute 'append'
    解决:检查对象类型是否支持该属性(如字符串不可变,不能用 append)。

  8. 模块未找到错误(ModuleNotFoundError)
    原因:导入不存在的模块或未安装第三方库。
    示例:
    import numpyx # 拼写错误或未安装
    报错信息:ModuleNotFoundError: No module named 'numpyx'
    解决:检查模块名拼写,或通过 pip install 模块名 安装。

  9. 值错误(ValueError)
    原因:函数参数类型正确但值不合法。
    示例:
    num = int("abc") # 字符串无法转为整数
    报错信息:ValueError: invalid literal for int() with base 10: 'abc'
    解决:检查输入值是否符合函数要求(如确保字符串是数字)。

  10. 零除错误(ZeroDivisionError)
    原因:试图用 0 作为除数。
    示例:
    result = 10 / 0
    报错信息:ZeroDivisionError: division by zero
    解决:添加条件判断避免除数为 0。

其他常见错误
FileNotFoundError
原因:打开不存在的文件。
解决:检查文件路径和名称是否正确。

AssertionError
原因:assert 语句条件不满足。
解决:检查断言条件或调试代码逻辑。

UnboundLocalError
原因:函数内局部变量未赋值就被使用。
解决:使用 global 关键字或在函数内先赋值。

ImportError
原因:导入模块中的子模块或函数失败。
解决:检查模块结构或依赖是否完整。

RecursionError
原因:递归深度超出系统限制。
解决:优化递归终止条件,或改用循环。

posted on 2025-04-24 17:07  技术飞升  阅读(1015)  评论(0)    收藏  举报

导航