实验七

🌴 2022.6.10 下午 实验七

实验七 异常处理和单元测试

题目一

定义一个利用列表实现队列的类List_Queue,可以实现队列元素进入、删除、求队列长度等功能

定义个异常处理类List_Queue_Exception对类List_Queue中可能出现的异常进行处理

问题分析

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。

通过设计List_Queue类,利用集合保存队列数据,增list.append()list.pop()

设计List_Queue_Exception类,当队列为空且执行出队操作时,对异常处理

代码

"""
@Author:张时贰
@Date:2022年06月10日
@CSDN:张时贰
@Blog:zhsher.cn
"""


class List_Queue:
# 初始化
def __init__(self):
self.list1 = [ ]
print ( '初始化成功!' )

# 入队
def enqueue(self, item):
self.list1.append ( item )
print ( '添加成功!' )

# 出队
def dequeue(self):
if len ( self.list1 ) > 0:
print ( "出队列数据:", self.list1[ 0 ] )
self.list1.pop ( 0 )
else:
raise List_Queue_Exception ()

# 返回队列长度
def lenqueue(self):
return len ( self.list1 )

# 输出队列
def l_queue(self):
print ( self.list1 )


class List_Queue_Exception ( BaseException ):
def __init__(self):
print ( "列表为空!" )


if __name__ == '__main__':
list_queue = List_Queue ()
print ( "-----------------" )
print ( "*****1,入队*****" )
print ( "*****2,出队*****" )
print ( "*****3,队列长度*" )
print ( "*****4,显示列表*" )
print ( "*****0,退出*" )
print ( "-----------------" )
while True:

x = int ( input ( "输入序号:" ) )
try:
if x in [ 0, 1, 2, 3, 4 ]:

if x == 0:
print ( "已经退出" )
break;
elif x == 1:
y = input ( "请输入输入的数据:" )
list_queue.enqueue ( y )
elif x == 2:
list_queue.dequeue ()
elif x == 3:
print ( "队列长度为:", list_queue.lenqueue () )
elif x == 4:
list_queue.l_queue ()

else:
print ( "输入有误!" )
except BaseException as ex:
print ( ex )

结果

Python实验19

题目二

定义一个实现算术运算的类Arithmetic_Operation,可以实现两个整数的加法、减法、乘法和除法运算

定义一个测试类Test_Arithmetic_Operation对Arithmetic_Operation中的功能进行测试

问题分析

Arithmatic_Operation类中分别设计构造函数、add()sub()mul()div(),在Test_Arithmetic_Operation类中利用单元测试框架unittestArithmatic_Operation类测试

代码

"""
@Author:张时贰
@Date:2022年06月10日
@CSDN:张时贰
@Blog:zhsher.cn
"""
# 利用unittest框架测试,文件名不要包含特殊符号".、,?"
import unittest


class Arithmatic_Operation:
def add(self):
return self.x + self.y

def sub(self):
return self.x - self.y

def mul(self):
return self.x*self.y

def div(self):
return self.x/self.y

def __init__(self, x, y):
self.x = x
self.y = y


class Test_Arithmetic_Operation ( unittest.TestCase ):
def setUp(self):
self.op = Arithmatic_Operation ( 3, 5 )

def test_add(self):
if self.assertEqual ( self.op.add (), 8 ):
print ( "正确" )

def test_sub(self):
self.assertEqual ( self.op.sub (), -2 )

def test_mul(self):
self.assertEqual ( self.op.mul (), 15 )

def test_div(self):
self.assertEqual ( self.op.div (), 0.6 )


if __name__ == '__main__':
unittest.main ()

结果

Python实验20