亳州有做网站的吗,外贸行业网站推广,seo排名工具给您好的建议,创意网站制作自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501
在程序开发过程中#xff0c;免不了会出现一些错误#xff0c;有语法方面的#xff0c;也有逻辑方面的。对于语法方面的比较好检测#xff0c;因…自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501
在程序开发过程中免不了会出现一些错误有语法方面的也有逻辑方面的。对于语法方面的比较好检测因为程序会直接停止并且给出错误提示。而对于逻辑错误就不太容易发现了因为程序可能会一直执行下去但结果是错误的。所以作为一名程序员掌握一定的程序调试方法可以说是一项必备技能。
1 使用自带的IDLE进行程序调试
多数的集成开发工具都提供了程序调试功能。例如我们一直在使用的IDLE也提供了程序调试功能。使用IDLE进行程序调试的基本步骤如下
1打开IDLEPython Shell在主菜单上选择“Debug”→“Debugger”菜单项将打开Debug Control对话框此时该对话框是空白的同时Python Shell窗口中将显示“[DEBUG ON]”表示已经处于调试状态如图11所示。 图11 处于调试状态的Python Shell
2在Python Shell窗口中选择“File”→“Open”菜单项打开要调试的文件。这里打开实例01中编写的division_apple.py文件然后添加需要的断点。
说明断点的作用设置断点后程序执行到断点时就会暂时中断执行程序可以随时继续。
添加断点的方法是在想要添加断点的行上单击鼠标右键在弹出的快捷菜单中选择“Set Breakpoint”菜单项。添加断点的行将以黄色底纹标记如图12所示。 图12 添加断点
说明如果想要删除已经添加的断点可以选中已经添加断点的行然后单击鼠标右键在弹出的快捷菜单中选择“Clear Breakpoint”菜单项。
3添加所需的断点添加断点的原则是程序执行到这个位置时想要查看某些变量的值就在这个位置添加一个断点后按下快捷键F5执行程序这时Debug Control对话框中将显示程序的执行信息选中Globals复选框将显示全局变量默认只显示局部变量。此时的Debug Control对话框如图13所示。 图13 显示程序的执行信息
4在图13所示的调试工具栏中提供了5个工具按钮。这里单击Go按钮继续执行程序直到所设置的第一个断点。由于在division_apple.py文件中第一个断点之前需要获取用户的输入所以需要先在Python Shell窗口中输入苹果和小朋友的数量。输入后Debug Control窗口中的数据将发生变化如图14所示。 图14 显示执行到第一个断点时的变量信息
说明在调试工具栏中的5个按钮的作用为Go按钮用于执行跳至断点操作Step按钮用于进入要执行的函数Over按钮表示单步执行Out按钮表示跳出所在的函数Quit按钮表示结束调试。
5继续单击Go按钮将执行到下一个断点查看变量的变化直到全部断点都执行完毕。
程序调试完毕后可以关闭Debug Control窗口此时在Python Shell窗口中将显示“[DEBUG OFF]”表示已经结束调试。 2 使用assert语句调试程序
在程序开发过程中免不了会出现一些错误有语法方面的也有逻辑方面的。对于语法方面的比较好检测因为程序会直接停止并且给出错误提示。而对于逻辑错误就不太容易发现了因为程序可能会一直执行下去但结果是错误的。所以作为一名程序员掌握一定的程序调试方法可以说是一项必备技能。Python提供了assert语句来调试程序。assert的中文意思是断言它一般用于对程序某个时刻必须满足的条件进行验证。assert语句的基本语法如下
assert expression [,reason]
参数说明
l expression条件表达式如果该表达式的值为真时什么都不做如果为假时则抛出AssertionError异常。
l reason可选参数用于对判断条件进行描述为了以后更好地知道哪里出现了问题。
例如修改实例01应用断言判断程序是否会出现苹果不够分的情况如果不够分则需要对这种情况进行处理。 实例04 模拟幼儿园分苹果应用断言调试
在IDLE中创建一个名称为division_apple_dug.py的文件然后将实例01的代码全部复制到该文件中并且在第5行代码“children int(input(请输入来了几个小朋友))”的下方添加一个assert语句验证苹果的数量是否小于小朋友的数量修改后的代码如下
def division(): 功能分苹果 print(\n 分苹果了 \n) apple int(input(请输入苹果的个数)) # 输入苹果的数量 children int(input(请输入来了几个小朋友)) assert apple children ,苹果不够分 # 应用断言调试 result apple // children # 计算每人分几个苹果 remain apple - result * children # 计算余下几个苹果 if remain 0: print(apple, 个苹果平均分给, children, 个小朋友每人分, result, 个,剩下, remain, 个。) else: print(apple, 个苹果平均分给, children, 个小朋友每人分, result, 个。)
if __name__ __main__: division() # 调用分苹果的函数
运行执行输入苹果的数量为5小朋友的数量为10时将抛出如图15所示的AssertionError异常。 图15 苹果的个数小于小朋友的个数时抛出AssertionError异常
通常情况下assert语句可以和异常处理语句结合使用。所以可以将上面代码的最后一行代码修改为以下内容
try: division() # 调用分苹果的函数
except AssertionError as e: # 处理AssertionError异常 print(\n输入有误,e)
这样再执行程序时就不会直接抛出异常而是给出如图16所示的提示。 图16 处理抛出的AssertionError异常
assert语句只在调试阶段有效。我们可以通过在执行python命令时加入-O大写参数来关闭assert语句。例如在命令行窗口中输入以下代码执行“F:\program\Python\Code”目录下的division_apple_bug.py文件即关闭division_apple_bug.py文件中的assert语句。
F:
cd F:\program\Python\Code
python -O division_apple_bug.py 说明division_apple_bug.py文件的内容就是实例04的内容其中添加了assert语句。
执行上面的语句后输入苹果的数量为5小朋友的数量为10时并没有给出“输入有误苹果不够分”的提示如图17所示。 图17 在非调试状态下执行程序将忽略assert语句