PyCharm报告运行时错误:a ZeroDivisionError。深刻研究一下代码,找出问题所在。这里可使用PyCharm调试器来查看代码中发生了什么。要开始调试,您必须先设置一些断点。要建立断点,只需单击左侧gutter:dom
接下来,单击左侧gutter中的播放图标,在main旁边,而后选择Debug 'Car'。 PyCharm启动调试会话并显示调试工具窗口。编辑器
在Console选项中,输入S:工具
如您所见,断点标记变为蓝色。这意味着已经达到了断点; 请注意,此时还没有执行突出显示的代码行。spa
单击播放图标以恢复脚本执行。如今另外一个断点也出现了:默认状况下,PyCharm将中止代码中未捕获的任何异常,而且它将显示带闪电的断点图标。3d
控制台还会显示错误消息。您还能够在调试器中看到该值self.time等于零:调试
Surrounding codecode
为避免再次遇到一样的问题,如今添加一个if语句来检查时间是否等于零。为此,在方法average_speed中选择语句return self.odometer / self.time,而后按Ctrl + Alt + T(Code | Surround with):blog
PyCharm建立一个stub if构造,让你完成填充正确内容的任务。编辑后,获得如下内容:作用域
“调试”工具窗口显示框架, 变量和监视的专用窗格以及控制台,其中显示全部输入和输出信息。若是但愿控制台始终可见,能够将其拖动到PyCharm窗口的一个边缘。
Stepping
若是您但愿逐行查看代码的做用,则无需在每一行上设置断点,您能够单步执行代码。看一下示例程序是什么样子:单击播放图标,转到控制台询问汽车的平均速度(类型'S'),能够看到达到断点。这时可使用Stepping工具栏按钮选择想要在下一行中止的行。
例如,单击Step Over 按钮并看到蓝色标记移动到下一行代码:
若是单击Step Into按钮,您将看到action = input("What should I do? [A]ccelerate, [B]rake, " "show [O]dometer, or show average [S]peed?").upper() 调试器进入文件parse.py:
可是,若是继续使用Step Over 按钮,您将看到您的应用程序只是传递到下一个循环:
若是您想专一于本身的代码,请使用Step Into My Code按钮 - 这样您就能够避免进入库类。
Watching
PyCharm容许您观察任何变量。只须要单击Watches选项的工具栏中的+,而后输入你想要观看的变量的名称-将其设置为 my_car.time。请注意,此处可使用代码完成:
首先,您看到时间等于nil - 这意味着该变量还没有定义:
可是,当程序执行继续到定义变量的做用域时,监视器将得到如下视图:
内联调试
您可能已经注意到另外一个PyCharm功能,能够轻松查看代码正在执行的操做: 内联调试器。一旦你遇到任何断点,PyCharm就会在编辑器中向你显示许多变量的值:
默认状况下启用此内联调试功能。若是您没有看到内联调试值,请使用调试工具窗口中的设置图标检查它是否已启用::
评估表达式
最后,您能够随时评估任何表达式。
实际上,你能够用watch看到一样的东西。使用评估表达式,您能够执行使用watch没法执行的操做:您能够更改内容。例如,若是输入所需的里程表值50,而后继续单步执行脚本,您将得到如下信息: