一、引言
在学习过程中会遇到各种错误,本章介绍常见错误和调试方法!不要怕,错误是学习的好机会!
💡 不要怕报错!错误信息是来帮你的!
二、错误类型详解(常见的8种)
2.1 SyntaxError:语法错误
# ❌ 错误示例
if True
print("错了") # 少了冒号
# ❌ 错误示例
print("hello' # 引号不匹配
# ❌ 错误示例
a = 10 + # 表达式不完整
# ✅ 正确
if True:
print("对了")
2.2 IndentationError:缩进错误
# ❌ 错误示例:没有缩进
if True:
print("错了")
# ❌ 错误示例:缩进不对
if True:
print("a")
print("b")
# ✅ 正确
if True:
print("a")
print("b")
2.3 NameError:变量名错误
# ❌ 错误示例:变量没定义
print(name) # name 还没定义过
# ❌ 错误示例:拼写错误
name = "小明"
print(nane) # 拼错了
# ✅ 正确
name = "小明"
print(name)
2.4 TypeError:类型错误
# ❌ 错误示例:类型不匹配
age = "18"
print(age + 1) # 字符串不能和数字相加
# ❌ 错误示例:函数参数不对
len(123) # len() 不能处理数字
# ✅ 正确
age = int("18")
print(age + 1)
2.5 ValueError:值错误
# ❌ 错误示例:转换失败
int("abc") # 不能把 abc 转成整数
# ❌ 错误示例
int("12.34") # 这样也不行
# ✅ 正确
float("12.34") # 可以转成浮点数
2.6 IndexError:索引错误
# ❌ 错误示例:索引越界
list = [1, 2, 3]
print(list[10]) # 一共只有 3 个元素,索引 0-2
# ✅ 正确
print(list[0]) # 1
2.7 KeyError:键错误(字典)
# ❌ 错误示例
dict = {"name": "小明"}
print(dict["age"]) # 没有 age 这个键
# ✅ 正确
print(dict.get("age", "没有")) # 安全访问
2.8 AttributeError:属性错误
# ❌ 错误示例
number = 123
number.upper() # 数字没有 upper() 方法
# ✅ 正确
text = "hello"
text.upper() # 字符串才有
三、错误信息怎么看?(重要!)
Traceback (most recent call last):
File "test.py", line 5, in <module> # ← 错误文件和行号
print(nane)
NameError: name 'nane' is not defined # ← 错误类型和原因
步骤:
- 看最后一行:错误类型和原因
- 看倒数第二行:错误在哪一行
- 看 Traceback:从哪里开始出错
四、调试技巧(程序员必备!)
4.1 用 print() 调试
# 想要知道变量的值
a = 10
b = 20
print(f"a = {a}")
print(f"b = {b}")
result = a + b
print(f"result = {result}")
4.2 分步测试
# 不要一下子写太多,写一点测一点
x = int(input("请输入 x:"))
print(f"x = {x}")
y = int(input("请输入 y:"))
print(f"y = {y}")
z = x + y
print(f"z = {z}")
4.3 注释掉部分代码
# 不知道哪里错了?先注释掉后面的
a = 10
# b = 20
# c = a + b
print(a)
五、常见错误案例
案例 1:忘记加冒号
# ❌ 错误
if a > b
print("大")
# ✅ 正确
if a > b:
print("大")
案例 2:赋值用了 = 而不是 ==
# ❌ 错误
if a = 10:
print("对的")
# ✅ 正确
if a == 10:
print("对的")
案例 3:字符串拼接数字
# ❌ 错误
age = 18
print("我" + age + "岁")
# ✅ 正确
print(f"我{age}岁")
print("我" + str(age) + "岁")
案例 4:缩进混用
# ❌ 错误
if True:
print("a")
\tprint("b") # 一会空格一会 Tab
# ✅ 正确(全部用 4 个空格)
if True:
print("a")
print("b")
案例 5:input() 忘记转类型
# ❌ 错误
age = input("年龄:")
print(age + 1) # 报错!
# ✅ 正确
age = int(input("年龄:"))
print(age + 1)
六、使用 try-except 处理错误
# 让程序不会轻易崩溃
try:
age = int(input("请输入年龄:"))
print(f"你{age}岁")
except ValueError:
print("请输入数字!")
更完善的例子
while True:
try:
age = int(input("请输入年龄:"))
break
except ValueError:
print("请输入数字,再试一次!")
print(f"你的年龄是:{age}")
七、VS Code 调试工具
# 1. 在 VS Code 左侧调试图标
# 2. 在代码行号左侧点击(设置断点)
# 3. 按 F5 开始调试
# 4. 查看变量值
八、课后练习题
# 练习 1:找出下面代码的错误并修正
# a = 10
# if a > 5
# print('大于')
# 练习 2:找出错误并修正
# name = input('姓名')
# print('你好' + name + 18)
# 练习 3:写一个程序,输入数字,如果输入错误提示重新输入
总结
通过本章学习,你应该已经掌握了「基础语法常见错误与调试」的相关知识。
遇到错误不要怕,认真看错误信息,一行一行找!恭喜你完成模块 2!