四则运算器效能分析
GitHub地址
https://github.com/Coylin777/-
PSP表格:
|
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
|
解题思路 |
15 |
20 |
|
代码实现 |
60 |
65 |
|
代码测试与代码优化 |
30 |
40 |
|
测试改进程序性能上所花费的时间 |
20 |
10 |
|
编写博客 |
30 |
40 |
1.题目描述
能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!)
除了整数外,还要支持真分数的四则运算
2.解题思路
语言:python
目标:生成两项的四则运算式子
过程:
1.生成数字,生成四则符号
2.连接数字与符号
3.返回算术题和结果
4.用一个列表存储结果,用一个列表储存算术题
3.设计实现
主函数:选择真分数四则运算还是整数四则运算
fun1整数出题 fun2真分数出题
3.注意点:使用random库随机生成0~100之间的整数或分数
使用random库随机生成随机符号(+-*/)
防止被除数是否为0
使用max()min()函数防止生成小数
使用list.append()储存算术题
4.代码说明
1.
def zhengshu(q,ans):#整数出题
sym = random.choice(['+','-','*','/'])
n1 = random.randint(1,20)
n2 = random.randint(1,20)
if sym == '+':
q.append(str(n1) + '+' + str(n2) + '=')
ans.append(n1 + n2)
elif sym == '-':
bign,smalln = max(n1, n2), min(n1, n2)#防止出现负数
q.append(str(bign) + '-' + str(smalln) + '=')
ans.append(bign - smalln)
elif sym == '*':
q.append(str(n1) + '*' + str(n2) + '=')
ans.append(n1 * n2)
else:
n1, n2 = max(n1, n2), min(n1, n2)
q.append(str(n1) + '/' + str(n2) + '=')
ans.append(n1 / n2)
2.
def createF(): #生成分数
fz1 = random.randint(0, 20)
if fz1 == 0:
fm1 = random.randint(1, 20)
else:
fm1 = random.randint(1, 20)
f1 = Fraction(fz1, fm1)
fz2 = random.randint(1, 20)
fm2 = random.randint(20, 20)
f2 = Fraction(fz2, fm2)
return f1, f2
3.
def fenshu(q,ans): #两个分数的四则运算
symbol = random.choice(['+','-','*','/'])
f1,f2 = createF()
if symbol =='+':
while f1+f2>1:
f1,f2 = createF()
q.append(str(f1)+'+'+str(f2)+'=')
ans.append(f1+f2)
elif symbol =='-':
f1,f2 = max(f1,f2),min(f1,f2) #防止出现负数
q.append(str(f1)+'-'+str(f2)+'=')
ans.append(f1-f2)
elif symbol == '*':
while f1*f2>1:
f1,f2 = createF()
q.append(str(f1)+'×'+str(f2)+'=')
ans.append(f1*f2)
else:
while f1/f2>1:
f1,f2=createF()
q.append(str(f1)+'÷'+str(f2)+'=')
ans.append(Fraction(f1,f2))
5.测试运行
整数运算测试

真分数运算测试

6. 改进程序性能
用Fraction库代替了直接输出,程序变得简洁好看。

7.学习总结
无论是从代码的编写还是效能测试来讲,这一次作业都让我从实际动手应用中收获了不少“软件开发流程”相关知识。

浙公网安备 33010602011771号