“代码跑着跑着突然报错,盯着屏幕半小时找不到原因?”
“传给函数一个字符串,结果因为类型不对崩溃了?”
——新手写代码最怕“意外”,而错误处理、调试和测试就是应对意外的“三大法宝”。
今天学会这四招,不仅能让代码“报错不崩溃”,还能快速定位问题,写出更靠谱的程序。
一、错误处理:让代码“优雅认错”不崩溃
代码运行中难免出错(比如输入非数字、文件找不到),直接崩溃体验太差。用try-except语句就能捕获错误,让程序要么处理错误,要么给出友好提示,而不是直接罢工。
def calculate_average(scores): try: total = sum(scores) average = total / len(scores) return round(average, 2) except ZeroDivisionError: print("错误:成绩列表不能为空!") return 0 except TypeError: print("错误:成绩必须是数字!") return 0 finally: print("成绩计算流程结束")print("正常情况平均分:", calculate_average([85, 92, 78])) calculate_average([])calculate_average([85, "92", 78])
核心逻辑:try包裹“风险代码”,except针对性捕获错误,finally做收尾工作。新手不用记全错误类型,遇到报错时,把错误名称抄进except即可。
二、调试:快速定位错误的“放大镜”
代码报错不可怕,找不到错在哪才可怕。调试就是“一步步跟踪代码执行过程”,像侦探查案一样揪出问题。新手不用学复杂工具,掌握三种方法足够应对80%的场景。
def find_top_score(scores): top = 0 for s in scores: print(f"当前分数:{s},当前最高分:{top}") if s > top: top = s return topfind_top_score([85, 92, 78, 95, 88])def calculate_score(score): assert 0 <= score <= 100, "成绩必须在0-100之间" return score * 0.8import pdbdef add_score(a, b):
pdb.set_trace() return a + badd_score(85, 92)
新手建议:先把print用熟,简单直观;写核心逻辑时加assert做验证,提前暴露问题;复杂场景再用pdb单步调试。
三、单元测试:给函数“做体检”,确保功能靠谱
写好一个函数后,怎么确保它在各种情况下都能正常工作?单元测试就是“自动化测试工具”,提前写好测试用例,一键验证函数是否符合预期,比手动测试省10倍时间。
import unittest def grade_level(score): if score >= 90: return "优秀" elif score >= 80: return "良好" elif score >= 60: return "合格" else: return "不合格"class TestGradeLevel(unittest.TestCase): def test_excellent(self): self.assertEqual(grade_level(95), "优秀") def test_good(self): self.assertEqual(grade_level(85), "良好") def test_borderline(self): self.assertEqual(grade_level(60), "合格") self.assertEqual(grade_level(59), "不合格")if __name__ == "__main__": unittest.main()
运行后会显示测试结果,若所有用例通过则全绿,失败会提示具体是哪个用例、实际返回值与预期不符,精准定位问题。
四、文档测试:边写文档边测试,一举两得
写函数注释时,顺便把测试用例写进去,用doctest模块就能自动执行注释里的代码,既保证了文档的准确性,又完成了简单测试,非常适合工具函数。
def multiply(a, b): """ 计算两个数的乘积 测试用例: >>> multiply(3, 5) 15 >>> multiply(0, 100) 0 >>> multiply(-2, 4) -8 """ return a * bif __name__ == "__main__": import doctest doctest.testmod()
优势:文档和测试绑定,后续修改函数时,若忘了更新文档,测试会失败,避免“文档与代码不符”的坑。
今天的四个知识点,构成了“代码质量保障体系”:错误处理让程序更健壮,调试帮你快速排错,单元测试全面验证功能,文档测试兼顾文档与测试。新手不用追求“一次性写完美”,可以按“先加try-except防崩溃→用print调试→写简单单元测试”的步骤逐步提升,写代码会越来越有底气。
【今日任务】对之前写的“calculate_bmi(weight, height)”函数做优化:① 用try-except捕获“身高为0”“体重是字符串”的错误;② 写3个单元测试用例(正常值、边界值、异常值);③ 给函数加文档测试。
以上就是今天给你分享的内容,觉得有用的话欢迎点赞收藏哦!
如果你也对Python这门编程感兴趣的话,欢迎加入我们。(小白也可以参加)
三更老师亲自上课示范,2天:理论+实操教学+直播教学演示+课后辅导获取方式:
1.关注下方公众号↓↓↓↓
2.点赞+再看
3.在后台发送:“python” 即可领取资料福利/开通上课权限
资料已经打包好了,需要的关注公众号发送“111”领取