Dotcpp  >  编程教程  >  Python异常处理和程序调试  >  使用assert断言对Ptyhon程序调试分析

使用assert断言对Ptyhon程序调试分析

点击打开在线编译器,边学边练

我们上一节使用IDLE自带功能学习了Python的程序调试,除了自带的工具外,还可以通过assert语句进行调试。

我们在列表中进行插入操作的时候使用过assert,它在程序调试的时候被称为断言,它的语法结构为:

assert expression[,describe]

expression为一个表达式,如果为真就不采取操作,反之抛出AssertionError异常。

我们先举个简单的例子来了解一下assert语句,我们输入两个数字,然后我们要在输入之后就查看一下两个数值的大小,如果前者大于后者则成立,前者小于或等于后者就输出相应语句,代码如下:

n = int(input('请输入一个整数:'))
m = int(input('请输入一个整数:'))
assert n > m,'wrong'
print('程序可以正常运行')

输出结果为:

请输入一个整数:4
请输入一个整数:3
程序可以正常运行

这是一个简单的断言使用方式,我们还可以结合前面学习到的抛出异常结合assert语句来使用一下。

我们先写一个函数,判断一个数字是否属于质数,然后我们输入一些测试数据通过断言进行测试,如果整组数据全是质数则通过测试,如果存在非质数数则抛出异常,代码如下:

def is_prime(num):
    from math import sqrt
    for i in range(2, int(sqrt(num) + 1)):
        if num % i == 0:
            return False
    else:
        return True
if __name__ == '__main__':
  try:
    my_list =[]
    for i in range(4):
      s = int(input())
      my_list.append(s)
    print('my_list当前数据:',my_list)
    for i in my_list:
      assert is_prime(i) == True,'ERROR'
  except AssertionError:
    print('列表中存在非质数')
  else:
    print('列表中全为质数')

我们先测试一组全为质数的数据,输出结果为:

2
7
13
17
my_list当前数据: [2, 7, 13, 17]
列表中全为质数

我们再测试一组存在非质数的数据,输出结果为:

2
3
4
16
my_list当前数据: [2, 3, 4, 16]
列表中存在非质数

在这个函数中,我们首先定义一个函数进行质数的判定,如果是质数则返回True,如果不是返回Flase。然后我们在main中直接使用异常处理机制,我们在try语句中创建一个列表来存放我们输入的数据,然后对每个数据进行断言,如果出现非质数的数据,那么就执行异常语句中的相应语句,结束操作,反之则继续进行操作。

断言语句对比与上一节我们学习的IDLE自带的程序调试功能,这个是写在我们的程序中的,我们可以在程序写完之后运行的时候很快的发现我们出问题的语句,并找到原因,通过这种方式也有利于他人更清晰的理解自己的代码。

关于异常处理语句和程序调试就学习到这里,这些内容多用于程序开发,通过这两种机制能够完善我们的程序,保证程序的实用性,对于科研竞赛就不需要过多的使用。



本文固定URL:https://www.dotcpp.com/course/278

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Python教程
第一章 Python入门
第二章 Python基础语法
第三章 Python入门语法
第四章 Python核心语法
第五章 Python函数
第六章 Python面向对象编程
第七章 Python模块
第八章 Python异常处理和程序调试
第九章 Python文件及目录操作
第十章 PythonGUI编程
第十一章 Python进程和线程
第十二章 Python数据库管理
第十三章 Python算法
第十四章 Python爬虫
第十五章 Python实战项目
第十六章 后记
Dotcpp在线编译      (登录可减少运行等待时间)