🐸 青蛙编程网
首页 / 开发工具 / PyCharm / 5. 运行与调试

运行与调试

这是什么:断点调试 = 让程序在指定行「暂停」,然后逐行往下走,随时看每个变量的值。PyCharm 的调试器把这些做成了点点点的图形界面。

为什么用:程序结果不对时,普通人加十句 print 重跑十遍;会调试的人打一个断点,变量值一眼看穿——调试是新手到熟手的分水岭,本章是全教程最值钱的一章。

如何用:拿一段「结果不对」的代码,从打断点到定位 bug 完整走一遍。

一个有 bug 的程序

def discount_price(price: float, discount: float) -> float:
    """打折后价格:discount 传 0.8 表示八折"""
    return price * discount * 10


print(discount_price(100, 0.8))

输出:

800.0

100 块打八折收你 800?正常该是 80.0。别改代码,先用调试器找出问题出在哪一步。

四步调出真相

① 打断点:点 return 那行行号左侧的空白,出现红点——程序跑到这会停。

② Debug 启动:右键代码 → 调试 '文件名'(或右上角小虫图标 / Shift+F9)。程序启动并停在断点行(高亮蓝底),底部切到调试面板。

③ 看变量:调试面板 变量(Variables) 区直接列着当前作用域的所有值:

price    : 100.0
discount : 0.8

参数都正常——说明问题出在计算那一步。

④ 单步走:按 F8(步过)执行 return 行,面板立刻显示返回值:800.0。心算一下:100 × 0.8 × 10 = 800——多乘了个 10,bug 定位。

修复:return price * discount,再运行输出 80.0。全程没加一句 print。

调试器常用操作

操作 快捷键 干什么
步过 Step Over F8 执行当前行,不进函数内部
步入 Step Into F7 进入当前行调用的函数内部
步出 Step Out Shift+F8 把当前函数执行完,回到调用处
继续 Resume F9 放行到下一个断点(或结束)
求值表达式 Alt+F8 暂停时临时算个表达式,如 price * discount

「求值表达式」是隐藏神器:暂停时按 Alt+F8,输入 price * discount 回车直接看到 80.0——试方案不用改代码重跑。

进阶:条件断点

循环跑几百次只想停在第 100 次?右键断点 → 输入条件,如 i == 100。程序只在条件成立时停下——大循环、批量处理的场景必会。

记忆口诀:红点一打 Shift+F9,Variables 里看真相;F8 步过 F7 步入,Alt+F8 现场算。

❓ 常见问题

Q1:按了 Debug 没停在断点?

确认右上角选中的运行配置就是要调的那个文件;再看断点红点是否被勾选禁用了(右键断点可启用/禁用)。

Q2:调试时程序自己跑完了?

那是按到了 F9(继续)。想重来直接再点一次 Debug——断点还在,不用重设。

Q3:带 input() 的程序能调试吗?

能:停在断点之前该输入还是要输入,流程和平时一样。

📝 本章小结

  • 调试四步:打断点 → Shift+F9 → 看 Variables → F8 单步
  • 步过 F8、步入 F7、求值 Alt+F8——三个键覆盖九成场景
  • 调试器不是最后手段,是第一反应:结果不对,先断点再说话
  • 条件断点专治大循环

动手改

  1. 把本章 bug 程序完整调一遍:断点 → 看变量 → 定位 → 修复 → 输出 80.0
  2. 写个 for i in range(10) 循环,用条件断点只停在 i == 5
  3. 给第 3 章的 hello.py 打断点,体验 input 与调试并存

上一章:编辑与重构 · 下一章:集成工具 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。