作为从「报错崩溃」到「熟练Debug」的过来人,今天把新手最容易栽跟头的10个错误全整理出来!每个错误都配有「一看就懂的例子」和「立马能用的解决办法」,建议先收藏,遇到问题直接对照排查~
一、SyntaxError:语法错误(新手第一大拦路虎)
为什么会报错?
就像写中文漏了标点符号,Python语法错一点都不行!
常见场景:
print('hello world) # 漏了右引号,电脑会问:“你的括号是不是丢了?”
if x > 5: print(x) # 冒号后面没空格,电脑:“我看不懂你想干啥!”
报错信息:
SyntaxError: ......(一般会用箭头标出错的位置)
怎么解决?
用VS Code等编辑器,写错会直接变红(就像word检查错别字)
写括号/引号时,先敲一对再填内容:print(' ') →print('hello')
二、IndentationError:缩进错误(Python的「特殊规矩」)
为什么会报错?
Python用「缩进」判断代码块(比如循环、条件句),缩进乱了逻辑就乱了!
常见场景:
for i in range(5):
print(i) # 这行没缩进,电脑:“你到底要不要循环啊?”
报错信息:
IndentationError: expected an indented block(意思是:“这里该空几格!”)
怎么解决?
永远用4个空格缩进(按4下空格,别按Tab键!)
编辑器设置里选「自动将Tab转成空格」(避免混用)
三、NameError:变量没定义(变量「玩失踪」)
为什么会报错?
你喊一个没出现过的人名,当然没人答应!
常见场景:
print(num) # num还没定义,电脑:“num是谁?没听说过!”
报错信息:
NameError: name 'num' is not defined(翻译:“num没注册,不能用!”)
怎么解决?
用变量前先赋值:num = 0(就像先介绍“这是num,他今年0岁”)
函数里用外面的变量,要加global:
x = 10
def func():
global x # 告诉电脑:“我用的是外面的x!”
print(x)
四、TypeError:类型错误(数据「合不来」)
为什么会报错?
就像把苹果和橘子硬塞到一个篮子,Python会告诉你“它们不是一类!”
常见场景:
a = '5' + 3 # 字符串和数字相加,电脑:“一个是文字,一个是数字,没法加!”
报错信息:
TypeError: can only concatenate str to str(翻译:“只能字符串加字符串!”)
怎么解决?
用type(a)看看变量类型(比如type('5')是<class 'str'>)
先转换类型:int('5') + 3(把文字“5”变成数字5)
五、IndexError:索引越界(数组「走太远」)
为什么会报错?
列表就像一排抽屉,编号从0开始,你问第4个抽屉(编号3)有没有东西,但抽屉只有3个!
常见场景:
lst = [1, 2, 3]
print(lst[3]) # 最大编号是2,电脑:“没有这个抽屉!”
报错信息:
IndexError: list index out of range(翻译:“索引超过范围啦!”)
怎么解决?
用len(lst)先看有几个元素(比如len([1,2,3])是3)
取最后一个元素用lst[-1](-1代表最后一个,-2代表倒数第二个)
六、KeyError:字典键错误(钥匙打不开门)
为什么会报错?
字典像一本通讯录,你用不存在的名字查电话!
常见场景:
d = {'a': 1, 'b': 2}
print(d['c']) # 'c'不在通讯录里,电脑:“查无此人!”
报错信息:
KeyError: 'c'(翻译:“'c'这个键不存在!”)
怎么解决?
先问有没有这个键:if 'c' in d:
安全取值用d.get('c', '默认值')(找不到就返回默认值)
七、IndentationError:混用Tab和空格(编辑器「罢工」)
为什么会报错?
Tab和空格像两种语言,编辑器看不懂混合语法!
常见场景:
if True:
print('hello') # 用了Tab(→)缩进
print('world') # 用了空格( )缩进
报错信息:
IndentationError: inconsistent use of tabs and spaces(翻译:“别混用Tab和空格!”)
怎么解决?
在编辑器设置里选「禁止使用Tab」,只用空格
用快捷键调整缩进:选中代码按Ctrl+[向左缩,Ctrl+]向右缩
八、逻辑错误:条件写反(最隐蔽的陷阱)
为什么会出错?
代码没报错,但结果和你想的相反——比如把“及格”写成“不及格”!
常见场景:
if score >= 60:
print('不及格') # 条件和结果写反了!
else:
print('及格')
怎么发现?
写完后自己代入数据试一遍:比如score=70,看看输出是不是“及格”
复杂条件加注释:
if score >= 60: # 60分以上为及格
print('及格')
九、FileNotFoundError:文件找不到(路径「迷路」)
为什么会报错?
你让电脑去客厅找书,但书其实在卧室!
常见场景:
with open('data.txt', 'r') as f: # data.txt不在当前文件夹
pass
报错信息:
FileNotFoundError: ......(翻译:“找不到这个文件!”)
怎么解决?
把文件和代码放在同一个文件夹
用完整路径:open('D:/python/data.txt', 'r')(Windows)或'/Users/you/data.txt'(macOS/Linux)
十、UnexpectedEOF:括号没闭合(编辑器「看不懂」)
为什么会报错?
写一半就结束,像话说到一半突然闭嘴!
常见场景:
print('hello # 漏了右引号,电脑:“你话没说完啊!”
list = [1, 2, 3 # 漏了右括号,电脑:“括号呢?”
报错信息:
SyntaxError: unexpected EOF while parsing(翻译:“还没写完呢!”)
怎么解决?
写长字符串用三引号:'''你好, 这是多行 字符串'''
复杂结构先敲完括号再填内容:([])→[1, 2, 3]
新手必备5大Debug技巧
- 分段测试:把代码拆成小块,跑通一块再写下一块
- print大法:在可疑的地方加print(变量),看值对不对
- 查报错信息:复制报错内容到百度/Google,加“Python”搜(比如“Python KeyError 解决”)
- 找别人帮忙:把代码截图发给同学/群里,有时候别人一眼就能看出问题
- 休息再看:卡壳超过30分钟,先做点别的,回来再看可能突然就懂了!
互动时间:
你第一次学Python时,被哪个错误坑过? 评论区分享你的“翻车故事”!
觉得有用就点赞+收藏,下次遇到报错不用慌,回来查这篇就够啦~