Python之程序调试

Python之程序调试

  • 一、前言
  • 二、使用自动的IDLE进行程序调试
  • 三、使用assert 语句调试程序


一、前言

  在程序开发过程中,免不了会出现一些错误,有语法方面的,也有逻辑方面的。对于语法方面的错误比较好检测,因为程序会直接停止,并且给出错误提示。而对于逻辑错误就不太容易发现了。因为程序可能会一直执行下去,但是结果是错误的。所以作为一个程序员,掌握一定的程序调试方法,可以说是一项必备技能。


二、使用自动的IDLE进行程序调试

  多数的集成工具都提供了程序调试功能。例如,我们一直在使用的IDLE,也提供了程序调试功能。使用IDLE进行程序调试的基本步骤如下:
  (1)打开IDLE(Python Shell),在主菜单上选择Debug-》Debugger菜单选项,将打开Debug Control对话框(此时该对话框是空白的),同时Python3.10.7 Shell窗口中将显示“[DEBUG ON]”(表示已经处于调试状态),如图所示:

在这里插入图片描述

  (2)在Python3.10.7 Shell窗口中,选择File-》Open菜单项,打开要调试的文件,然后添加需要的断点。

说明 :断点的作用:设置断点后,程序执行到断点时就会暂时中断执行,程序可以随时继续。

  添加断点的方法是:在想要添加断点的代码行上,单击鼠标右键,在弹出的快捷菜单中选择“Set Breakpoint”菜单项。添加断点的行将以黄色底纹标记,如图所示:
在这里插入图片描述

说明 :如果想要删除已经添加的断点,可以选中已经添加断点的行,然后单击鼠标右键,在弹出的快捷菜单中选择“Clear Breakpoint”菜单项即可。

  (3)添加所需的断点(添加断点的原则是:程序执行到这个位置时,想要查看某些变量的值,就在这个位置添加一个断点)后,按下快捷键,执行程序,这时Debug Control 对话框中将显示程序的执行信息,勾选Globals复选框,将显示全局变量。此时的Debug Control对话框如图所示:

在这里插入图片描述
  (4)在上图所示的调试工具栏中,提供了5个工具按钮。这里单击Go按钮执行程序,直到所设置的第一个断点。由于在实例代码.py文件中,第一个断点需要获取用户的输入,所以需要先在Python3.10.7 Shell窗口中输入除数和被除数。输入后,Debug Control窗口中的数据将发生变化,如下所示:

在这里插入图片描述

说明 :在调试工具栏中的5个按钮的作用为:Go按钮用于执行跳至断点操作;Step按钮用于进入要执行的函数;Over按钮表示单步执行;Out按钮表示跳出所在函数;Quit按钮表示结束调试。

多学两招 :在调试过程中,如果所设置的断点处有其他函数调用,还可以单击Step按钮进入到函数内,当确定该函数没有问题时,可以单击Out按钮跳出该函数。或者在调试的过程中已经发现的问题的原因,需要进行修改时,可以直接单击Quit按钮结束调试。另外,如果调试的目的不是很明确(即不确认问题的位置),也可以直接单击Setp按钮进行单步执行,这样可以清晰地观察地观察程序的执行过程和数据的变量,方便找出问题。

  (5)继续单击Go按钮,将执行到下一个断点,查看变量的变化,直到全部断点都执行完毕。调试工具栏上的按钮将变为不可用状态,如图所示:

在这里插入图片描述

  (6)程序调试完毕后,可以关闭Debug Control窗口,此时在Python 3.10.7 Shell窗口中将显示“DEBUG OFF”(表示已经结束调试)。


三、使用assert 语句调试程序

  在程序开发过程中,除了使用开发工具自带的调试工具进行调试外,还可以在代码中通过print()函数把可能出现问题的变量输出进行查看,但是这种方法会产生很多垃圾信息。所以调试之后还需要将其删除,比较麻烦。所示,Python还提供了另外的方法,使用assert语句调试。

  assert的中文意思是断言,它一般用于对程序某个时刻必须满足的条件进行验证。assert语句的基本语法如下:

assert expression [,reason]

参数说明:

  • expression:条件表达式,如果该表达式的值为True时,什么都不做;如果为False时,则抛出 AssertionError 异常。
  • reason:可选参数,用于对判断条件进行描述,为了以后更好地知道哪里出现了问题。

  例如,在执行除法运算的division()函数中,使用assert 断言调试程序,代码如下:

def division():num1 = int(input("请输入被除数:"))  # 用户输入提示,并记录num2 = int(input("请输入除数:"))assert num2 != 0, "除数不能为0"result = num1 // num2  # 执行除法运算print(result)if __name__ == "__main__":division()  # 调用函数

  运行程序,输入除数0,将抛出如下图所示的AssertionError 异常。

在这里插入图片描述

  通常情况下,assert语句可以和异常处理语句结合使用。所以,可以将上面代码改为以下内容:

def division():num1 = int(input("请输入被除数:"))  # 用户输入提示,并记录num2 = int(input("请输入除数:"))assert num2 != 0, "除数不能为0"result = num1 // num2  # 执行除法运算print(result)if __name__ == "__main__":try:  # 捕获异常division()  # 调用函数except AssertionError as e:  # 处理AssertionError异常print("\n输入有误", e)  # 输出错误原因

  assert语句只在调试阶段有效。我们可以通过在执行Python命令时加入-O(大写)参数来关闭assert 语句 。例如,在命令行窗户中输入以下代码执行“E:\program\Python\Code”目标下的Demo.py文件,即关闭Demo.py文件中的assert语句:

E:
cd E:\program\Python\Code
Python -O Demo.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/142674.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

第一个Python小程序(Hello World!)

当安装好python时,可以在命令提示符中直接输入 python 就可以进入python自带的编辑器(最好不要使用root用户,因为当你不小心把数据给删了,那可不是一般罪过啊!),如图: 此时就可…

Python 小程序 绘制 小蛇

好激动,终于接触到关于图形知识,(^__^*) 嘻嘻…… 一、程序代码 二、程序分析 绘制等边三角形 import turtledef drawSnake():turtle.fd(200)turtle.seth(120)turtle.fd(200)turtle.seth(240)turtle.fd(200)def main():turtle.setup(500, 500, 0, 0)pyth…

实战|轻松用 Python 开发一个简单有趣的聊天小程序

前言 Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。 UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。 UDP 的特性:它不属于连接型协议&…

Real-Time C++ 嵌入式C++ 程序设计(三)

翻译自 Real-Time C Efficient Object-Oriented and Template Microcontroller Programming 4th Edition - Kormanyos, Christopher,这书涉及了从C11 到C20 的内容,主要介绍使用C 的模板、面向对象等特性设计嵌入式程序。书里的示例代码都是公开的&#…

python控制微信小程序,python+appium微信小程序自动化实现

一、安装Appium 二、Appium SDK配置 三、chromedriver驱动路径配置及appium启动 1.查看X5内核版本 微信小程序是基于goole的webview 做了封装了,叫x5内核,所以跟chrome浏览器定位元素一样,需要配置chromedriver.exe, 通过 Uc-devtools 工具可以识别到 Chrome是什么版本,再…

Python--微信小程序简单爬取

一、微信小程序获取要求: 获取前10页的内容,并保存 二、准备分析工作 1、先进入微信小程序页面,url http://www.wxapp-union.com/; 2、进入首页,右击检查,或f12,如图; 3、获取第一页的url&…

Python+微信小程序开发(一)了解和环境搭建

一、小程序介绍 1.什么是微信小程序? 移动互联网时代,手机手机软件,在手机上中安装很多软件腾讯和阿里(只安装自己不用别人) 腾讯:微信 N小程序阿里:支付宝 N小程序 2.为什么要做小程序&am…

Python 作为小程序后端的三种方法

你好,我是征哥。微信的小程序是一个很不错的体验,简单,上手快,这几天也在学习使用小程序,自己总结了三种用 Python 作为小程序后端的方式,供你参考。 方法一、微信的云托管[1]。 优点:不需要购买…

python微信小程序爬虫_Python爬取微信小程序实战(通用)

背景介绍 最近遇到一个需求,大致就是要获取某个小程序上的数据。心想小程序本质上就是移动端加壳的浏览器,所以想到用Python去获取数据。在网上学习了一下如何实现后,记录一下我的实现过程以及所踩过的小坑。本文关键词:Python&a…

python如何运行?第一个python小程序示范

我们想要用python编程首先要做的就是安装一些工具,随后学会应用。那么问题来了,我们需要安装什么?python又是怎样运行的呢? 安装什么工具? 1、Python 3.6.5(我安装的,还有很多版本&#xff09…

python写一个完整的小程序_写一个python小程序

在windows环境下进行操作 window+R 输入cmd 创建一个文件夹 mkdir pytxt 创建一个py文件 py.py 用notepad或者记事本等工具进行编辑 或 首先声明python3.5以后没有中文乱码,已经支持中文,就像java的jdk1.6以后都支持中文一样。 进入python交互环境下然后可以进行数据运算,…

整理了适合新手的20个Python练手小程序

100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python。 本文附带基础视频教程:私信回复【基础】就可以获取的 【程序1】 题目:有1、2、3、4个数字&…

Python之有趣的小程序

目录 前言 一、阶乘计算器 1.运行结果 2.源代码 3.知识点 (1)while的语法 (2) 注意 二、斐波那契数列 1.运行结果 2.源代码 3.知识点 三、猜数字游戏 1.运行结果 2.源代码 3.知识点 (1)多重…

40个Python入门小程序

有不少同学学完Python后仍然很难将其灵活运用。我整理 37 个Python入门的小程序。在实践中应用Python会有事半功倍的效果。 例子1:华氏温度转换为摄氏温度 华氏温度转摄氏温度的公式:C (F - 32) / 1.8。本例考察Python的加减乘除运算符。 ""…

【强推】8个实用的Python程序

1. 引言 本文所提到的所有代码都曾经帮助我激发了解决问题的一些思考。不言而喻,如果您想学习编码和提升解决问题的能力,我们可以尝试自己来解决以下问题。 闲话少说,我们直接开始吧。 :) 2. 处理句子中的脏话 编写…

【Python精华】100个Python练手小程序

100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python。 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数&#xff…

【代码附】Python实现简单的7款小程序。

前文 在使用Python的过程中,我最喜欢的就是Python的各种第三方库,能够完成很多操作。 下面带大家做7款各种功能不一样的项目。 闹钟 目的:编写一个创建闹钟的Python脚本。 提示:你可以使用date-time模块创建闹钟,以及…

六级备考24天|CET-6|翻译技巧3|翻译2020年6月真题红楼梦|逻辑问题|理解背诵|20:50~22:30

目录 一、逻辑重建 例句1 例句2 例句3 二、定语和状语 定语的翻译原则 什么是状语? 状语位置 状语的基本形式 三、主动和被动 四、无主句 五、并列和连动 连动 六、作题步骤 七、红楼梦 PRACTICE ANSWER​ 时态问题 一、逻辑重建 试比较: 1. 下雨了…

eclipse环境配置

eclipse环境配置 0. 前言1. 下载eclipse2. 下载sdk3. 配置sdk环境变量4. 验证sdk其他 0. 前言 本节记录如何配置eclipse的sdk配置 操作系统:Windows10 专业版 开发环境:eclipse 1. 下载eclipse 来这边下载一下eclipse 菜鸟教程 完事之后打开eclips…

如何在Linux中安装redis(图文教程,按照步骤可安装成功)

目录 1、在Redis版本库:https://download.redis.io/releases/ 可根据自己的需求选择下载对应的版本,然后直接下载 2、通过Xftp工具进行上传,选择指定的应用拖到右侧对应的目录即可(可以放在Linux的tmp目录下,之后再进…