一、代码已上传至github:https://github.com/zkkkk117/daima/commit/30aaa836a21c405130d0592c7a9f91449f285966
二、项目PSP:
PSP表格指标 | 预估耗时(分钟) | 实际耗时(分钟) |
计划-估计该任务需要多少时间 | 200 | 210 |
需求分析与思路解析 | 30 | 20 |
代码实现 | 70 | 75 |
代码测试 | 50 | 55 |
代码优化 | 30 | 35 |
写博客 | 20 | 25 |
三、解题思路描述:
在本项目要求中,我们可以清楚明白需求是要编写能够随机生成的四则运算算式,便于小学生计算解题,考虑到面向对象是小学生,我们的式子不能太过于复杂。
只要编写一个仅有二项的简单的符合题目需求的算式生成代码即可。
四、设计实现过程:
实现类:三个类(除主类)分别为封装函数一:整数求解函数:zsResult();封装函数二:真分数求解函数:zsResult();运算函数:result(s,n1,n2)
其中,zsResult()和zsResult()中都调用运算函数result(s,n1,n2)来进行四则运算,同时result(s,n1,n2)类还负责输出结果
其中,运用random库中的randint方法随机生成整数,用random.choice(['+','-','*','/']) 来实现符号的随机生成,使用max()min()函数防止生成小数
五、代码说明:
def result(s,n1,n2): if s == '+': print('{} + {} = {}'.format(n1,n2,n1 + n2)) elif s == '-': print('{} - {} = {}'.format(n1,n2,n1 - n2)) elif s == '*': print('{} * {} = {}'.format(n1,n2,n1 * n2)) elif s == '/': if n2 == 0: print('***除数不能为零***') else: print('{} / {} = {}'.format(n1,n2,n1 / n2)) else: print('输入有误,请重新输入!')
def zsResult(): qes = int(input()) for a in range(qes): rsign = random.choice(['+','-','*','/']) rnum1 = random.randint(0,100) rnum2 = random.randint(0,100) if rnum1 < rnum2: rnum1 = max(rnum1, rnum2) rnum2 = min(rnum1, rnum2) result(rsign,rnum1,rnum2) else: result(rsign,rnum1,rnum2)
def zfsResult(): qes = int(input()) for b in range(qes): rsign = random.choice(['+','-','*','/']) snum1 = random.randint(0,100) mnum1 = random.randint(1,100) zfs1 = Fraction(snum1, mnum1) snum2 = random.randint(1,100) mnum2 = random.randint(1,100) zfs2 = Fraction(snum2, mnum2) if zfs1 < zfs2: zfs1 = max(zfs1, zfs2) zfs2 = min(zfs1, zfs2) result(rsign,zfs1,zfs2) else: result(rsign,zfs1,zfs2)
六、测试运行:
七、总结分析:经过这次实践要有规划和总结的能力,学会了制作PSP表,编写项目文档,。
更新
代码:整数求解与真分数求解函数:zsResult(),zfsResult()
def zsResult(): #整数运算 print("请输入出题数:") qes = int(input()) print("请输入最大项数:") maxone = int(input()) for a in range(qes): result(1,maxone) #调用实际运算函数result(bo,k) def zfsResult(): #真分数运算 print("请输入出题数:") qes = int(input()) print("请输入最大项数:") maxone = int(input()) for b in range(qes): result(2,maxone) #调用实际运算函数result(bo,k)
真分数运算结果: