PSP表格:
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
解题思路 |
20 |
25 |
代码实现 |
50 |
70 |
代码测试与代码优化 |
30 |
50 |
测试改进程序性能上所花费的时间 |
10 |
5 |
编写博客 |
30 |
20 |
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.学习总结
不过不用Fraction库,分数的四则运算结果显示会表示成float形式,不美观,因此使用了Fraction库。
第一次使用GitHub上传代码。