
Python编程过程中难免会遇到各种运行时错误。了解常见错误及其解决方法,能够帮助更快地定位和修复问题。以下是30个常见的Python运行时错误,每个错误都附有错误信息、说明和代码示例。
错误信息: SyntaxError: invalid syntax
说明:在 if 、 for 、 def 、 class 等语句末尾忘记添加冒号。
错误示例:
if x > 5
print("x is greater than 5")正确写法:
if x > 5:
print("x is greater than 5")错误信息: SyntaxError: invalid syntax
说明:在条件判断中使用赋值操作符而非比较操作符。
错误示例:
if x = 5:
print("x is 5")正确写法:
if x == 5:
print("x is 5")错误信息: IndentationError: unexpected indent
说明:代码缩进不一致或错误。
错误示例:
def greet():
print("Hello") # 缺少缩进正确写法:
def greet():
print("Hello")错误信息: TypeError: ‘list’ object cannot be interpreted as an integer
说明:直接使用列表对象作为 range() 的参数,而非列表长度。
错误示例:
items = [1, 2, 3]
for i in range(items):
print(items[i])正确写法:
items = [1, 2, 3]
for i in range(len(items)):
print(items[i])错误信息: TypeError: ‘str’ object does not support item assignment
说明:字符串是不可变类型,不能直接通过索引修改。
错误示例:
s = "hello"
s[0] = "H"正确写法:
s = "hello"
s = "H" + s[1:]错误信息: TypeError: can only concatenate str to str
说明:尝试将非字符串类型(如整数)与字符串直接连接。
错误示例:
age = 25
print("I am " + age + " years old.")正确写法:
age = 25
print("I am " + str(age) + " years old.")错误信息: SyntaxError: EOL while scanning string literal
说明:字符串开头和结尾的引号不匹配或缺失。
错误示例:
print('Hello world")正确写法:
print("Hello world")错误信息: NameError: name ‘var’ is not defined
说明:使用了未定义的变量或函数名。
错误示例:
x = 10
print(y) # y未定义正确写法:
x = 10
print(x)错误信息: AttributeError: ‘str’ object has no attribute ‘method’
说明:调用了对象不存在的属性或方法。
错误示例:
s = "HELLO"
print(s.lowercase())正确写法:
s = "HELLO"
print(s.lower())错误信息: IndexError: list index out of range
说明:尝试访问不存在的列表索引。
错误示例:
lst = [1, 2, 3]
print(lst[5](@ref)正确写法:
lst = [1, 2, 3]
print(lst[0](@ref) # 有效索引错误信息: KeyError: ‘key’
说明:尝试访问字典中不存在的键。
错误示例:
d = {"a": 1, "b": 2}
print(d["c"])正确写法:
d = {"a": 1, "b": 2}
print(d.get("c", "Key not found"))错误信息: SyntaxError: invalid syntax
说明:使用Python保留关键字(如 class 、 def )作为变量名。
错误示例:
class = "Math"正确写法:
class_name = "Math"错误信息: NameError: name ‘x’ is not defined
说明:变量未初始化就直接使用自增操作符。
错误示例:
x += 1正确写法:
x = 0
x += 1错误信息: UnboundLocalError: local variable referenced before assignment
说明:函数内局部变量在赋值前被使用,且存在同名的全局变量。
错误示例:
x = 10
def func():
print(x)
x = 20
func()正确写法:
x = 10
def func():
global x
print(x)
x = 20
func()错误信息: TypeError: ‘range’ object does not support item assignment
说明: range 对象不可变,不能直接修改其元素。
错误示例:
r = range(5)
r[0] = 10正确写法:
r = list(range(5))
r[0] = 10错误信息: SyntaxError: invalid syntax
说明:Python不支持 ++ 或 – 操作符。
错误示例:
x = 1
x++正确写法:
x = 1
x += 1错误信息: TypeError: method() takes 0 positional arguments but 1 was given
说明:类方法定义时缺少 self 参数。
错误示例:
class MyClass:
def greet():
print("Hello")
obj = MyClass()
obj.greet()正确写法:
class MyClass:
def greet(self):
print("Hello")
obj = MyClass()
obj.greet()错误信息: ZeroDivisionError: division by zero
说明:尝试将数字除以零。
错误示例:
result = 10 / 0正确写法:
result = 10 / 2 # 避免除零错误信息: ModuleNotFoundError: No module named ‘module’
说明:尝试导入未安装或不存在的模块。
错误示例:
import non_existent_module正确写法:
import math # 确保模块已安装错误信息: FileNotFoundError: [Errno 2] No such file or directory
说明:尝试打开不存在的文件。
错误示例:
with open("missing_file.txt", "r") as f:
content = f.read()正确写法:
try:
with open("missing_file.txt", "r") as f:
content = f.read()
except FileNotFoundError:
print("File not found.")错误信息: ValueError: invalid literal for int() with base 10
说明:尝试将非数字字符串转换为整数。
错误示例:
num = int("abc")正确写法:
num = int("123")错误信息: RecursionError: maximum recursion depth exceeded
说明:递归函数没有终止条件或递归深度过大。
错误示例:
def infinite_recursion():
infinite_recursion()
infinite_recursion()正确写法:
def finite_recursion(n):
if n == 0:
return
finite_recursion(n-1)
finite_recursion(10)错误信息: NameError: name ‘x’ is not defined
说明:在函数内使用全局变量但未声明。
错误示例:
def func():
print(x)
func()正确写法:
x = 10
def func():
global x
print(x)
func()错误信息: TypeError: ‘int’ object is not iterable
说明:对不可迭代的对象(如整数)使用循环。
错误示例:
for i in 42:
print(i)正确写法:
for i in [42]:
print(i)错误信息: TypeError: unhashable type: ‘list’
说明:尝试使用可变类型(如列表)作为字典的键。
错误示例:
d = {}
key = [1, 2]
d[key] = "value"正确写法:
d = {}
key = (1, 2) # 使用元组
d[key] = "value"错误信息: TypeError: function() takes 2 positional arguments but 3 were given
说明:调用函数时传入的参数数量与定义不匹配。
错误示例:
def add(a, b):
return a + b
result = add(1, 2, 3)正确写法:
def add(a, b):
return a + b
result = add(1, 2)错误信息: ValueError: I/O operation on closed file
说明:尝试对已关闭的文件进行读写操作。
错误示例:
f = open("file.txt", "w")
f.close()
f.write("Hello")正确写法:
with open("file.txt", "w") as f:
f.write("Hello")错误信息: RuntimeError: dictionary changed size during iteration
说明:在迭代字典或列表时修改其大小。
错误示例:
d = {"a": 1, "b": 2}
for key in d:
del d[key]正确写法:
d = {"a": 1, "b": 2}
for key in list(d.keys()):
del d[key]错误信息:无明确错误,但计算结果不符合预期。
说明:浮点数运算可能产生精度误差。
错误示例:
result = 0.1 + 0.2
print(result == 0.3) # False正确写法:
result = 0.1 + 0.2
print(abs(result - 0.3) < 1e-10) # 使用误差范围比较错误信息:根据具体错误而定。
说明:未处理可能出现的异常,导致程序意外终止。
错误示例:
num = int(input("Enter a number: "))正确写法:
try:
num = int(input("Enter a number: "))
except ValueError:
print("Invalid input!")通过熟悉这些常见错误,开发者可以更高效地调试代码,提升编程能力。在实际编程中,结合调试工具和异常处理机制,能够进一步减少运行时错误的影响。
“无他,惟手熟尔”!有需要的用起来!
如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!
本文分享自 Nicholas与Pypi 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!