很多零基础学Python的小伙伴,写完代码最头疼的问题:稍微改两行就报错、程序直接闪退、看不懂报错信息。
明明逻辑没问题,就因为用户输错内容、文件不存在、数据格式不对,程序直接崩溃停止运行,新手瞬间心态炸裂!
前面9篇我们学完了所有Python入门语法和2个实战项目,今天解锁新手进阶刚需技能:异常捕获 + 代码调试。
学会这篇,你的代码将从「勉强能跑」升级为「稳定不崩、健壮耐用」,彻底摆脱新手代码通病,是进阶实战、写项目的必备核心能力!
一、什么是异常?通俗大白话讲解
异常就是程序运行时出现的意外错误。
语法写错是编译错误,运行时突发的意外问题,就是异常。比如:输入非数字、读取不存在的文件、字符串和数字相加、列表取值越界等。
没有异常捕获的代码:一旦出现问题,程序直接终止、闪退、停止运行。
加了异常捕获的代码:出现问题不会崩溃,会友好提示错误,继续运行后续程序。
一句话总结:异常捕获,就是给代码装一层安全气囊,防止程序翻车崩溃!
二、Python异常捕获核心语法(try-except)
新手只需要记住固定万能格式,全网通用,适配所有入门场景:
try: # 有可能出错的、需要保护的代码 代码逻辑except: # 出现异常后,执行的提示代码 错误提示
语法拆解(小白必懂)
1、try:存放容易报错的核心代码;
2、except:一旦try里代码报错,立刻执行这里的内容,程序不崩溃;
3、没有报错:except内容不会执行,代码正常运行。
三、零基础实战:输入报错容错(最常用场景)
之前写的猜数字游戏、数值计算代码,输入文字、符号就会直接报错崩溃,用异常捕获一键解决!
# 异常捕获实战:安全数值输入try: age = int(input("请输入你的年龄:")) print(f"你的年龄是:{age},输入正确!")except: print("⚠️ 输入错误!请输入纯整数数字,禁止输入文字、符号、空格!")
运行效果:
输入数字 → 正常执行代码;
输入文字/符号 → 不崩溃,弹出友好错误提示,体验拉满!
四、精准捕获异常:指定错误类型(进阶用法)
通用except可以捕获所有错误,但不够精准。新手推荐掌握两种最高频异常类型,精准排错:
1、ValueError:数值类型错误(输入格式不对、类型转换失败)
2、FileNotFoundError:文件不存在错误(读取本地文件必备)
# 精准捕获不同异常try: num = int(input("请输入数字:")) print(100 / num)except ValueError: print("❌ 格式错误:必须输入纯数字!")except ZeroDivisionError: print("❌ 运算错误:除数不能为0!")
精准捕获可以区分报错原因,快速定位问题,调试代码效率翻倍!
五、完整语法:try+except+else+finally(全覆盖)
一套完整的异常处理结构,包含四种场景,适配所有实战项目:
✅ try:尝试执行代码
✅ except:报错时执行
✅ else:无报错时执行(正常运行奖励逻辑)
✅ finally:无论是否报错,必须执行(收尾、关闭文件必备)
try: score = int(input("请输入考试分数:"))except ValueError: print("❌ 输入格式错误!")else: print(f"✅ 输入成功!你的分数是:{score}") if score >= 60: print("考试及格!") else: print("考试不及格!")finally: print("📌 本次分数录入结束!")
六、实战落地:文件读写容错优化
结合第八篇文件读写知识点,解决「文件不存在报错」的高频问题,让文件操作代码更稳定:
# 带异常捕获的安全读取文件try: with open("学习记录.txt", "r", encoding="utf-8") as f: content = f.read() print("文件读取成功!") print(content)except FileNotFoundError: print("❌ 报错提示:未找到该文件,请检查文件名和路径!")except: print("❌ 文件读取失败,出现未知错误!")
七、小白必备:代码调试技巧(告别瞎改代码)
新手写代码90%的时间都在改错,学会调试,效率直接提升10倍!
1、万能打印调试法(新手首选)
在关键步骤加 print(),打印变量、数据、执行步骤,精准定位哪一步出错:
def get_sum(a, b): print("传入的a值:", a) print("传入的b值:", b) res = a + b print("计算结果:", res) return resget_sum(10, 20)
2、IDLE自带调试工具
Python自带IDLE编辑器支持断点调试,可逐行运行代码,查看每一步变量变化,精准排查逻辑漏洞。
3、新手排错核心口诀
报错看最后一行、先看错误类型、再看代码行数、优先检查格式与数据类型。
八、新手高频报错汇总+解决方案
1、ValueError:数据类型不匹配 → 检查输入内容、类型转换是否正确
2、FileNotFoundError:文件不存在 → 核对文件名、文件路径
3、IndexError:列表下标越界 → 检查取值下标是否超出列表长度
4、ZeroDivisionError:除数为0 → 增加判断,禁止0作为除数
5、IndentationError:缩进错误 → 统一4空格缩进,杜绝混用tab和空格
九、综合实战:优化升级版猜数字游戏
用今天学的异常捕获,优化第九篇小游戏,彻底解决闪退问题,代码更专业、更稳定!
import randomdef new_guess_game(): answer = random.randint(1, 100) count = 0 print("🎉 升级版猜数字游戏(带异常容错)") while True: try: num = int(input("请输入1-100的猜测数字:")) count += 1 if num > answer: print("❌ 猜大了!") elif num < answer: print("❌ 猜小了!") else: print(f"✅ 猜对了!答案{answer},共猜{count}次") break except ValueError: print("⚠️ 输入错误!仅支持输入纯数字,请重新输入!")new_guess_game()
写在最后
异常捕获和代码调试,是新手进阶大神的分水岭。
只会写能跑的代码是入门,能写出稳定、容错、可调试、不崩溃的代码,才是真正具备实战能力。
从这篇开始,你的代码不再脆弱,能够适配各种突发场景,完全满足日常脚本、办公自动化、小型项目的开发需求!
下一篇更新:Python高阶自动化|批量处理Excel表格,职场超实用技能,零基础也能学会批量整理数据、自动统计报表!
持续更新Python进阶实战系列,建议收藏关注我,稳步进阶Python实战!