软件工程个人项目—四则运算
Github地址:https://github.com/kelikel/work_first
能自动生成小学四则运算题目(结果不出现负数);
除了整数外,还要支持真分数的四则运算。
2)PSP
3)需求分析:
满足小学的基础计算且不超纲;
随机生成四则运算题,结果不为负数;
存在真分数的计算;
可生成答案进行对比;
4)
解题思路:
小学的运算只有加减乘除,且需要满足不出现负数的情况,因为运算中减法可能出现负数情况,需要对随机生成的两个数字进行比较,将较大的作为被减数,较小的作为减数,解决负数出现的问题;
为解决真分数问题,调用 fractions
库进行真分数运算;
5)设计实现:
newint( )函数生成整数四则运算
newfra( )函数生成真分数四则运算
newtest( )函数生成题库及答案
6)代码说明:
def newint(): #生成整数四则运算函数 opr = ['+', '-', '×', '÷'] fh = random.randint(0, 3) n1 = random.randint(1, 20) n2 = random.randint(1, 20) rjg = 0 if fh == 0: rjg = n1 + n2 elif fh == 1: n1, n2 = max(n1, n2), min(n1, n2) #减法排除负数结果干扰 rjg = n1 - n2 elif fh == 2: rjg = n1 * n2 elif fh == 3: n1, n2 = max(n1, n2), min(n1, n2) while n1 % n2 != 0: n1 = random.randint(1, 10) n2 = random.randint(1, 10) n1, n2 = max(n1, n2), min(n1, n2) #除法不出现余数 rjg = int(n1 / n2) print(n1, opr[fh], n2, '= ', end='') return rjg
真分数函数除调用fractions 外与四则运算相似
7)测试运行:
8)效能分析:
import profile if __name__== "__main__": profile.run("newtest()")
利用profile进行效能分析