GitHub源代码;https://github.com/asd2396012061/1/blob/master/new%20sizeyunsuan
要求:对上次的自动生成小学四则运算进行改进
在原有程序的基础上,我添加了一个转换假分数答案为带分数答案(存储在ans2[]列表中)的函数f(f),以便当学生给出带分数答案时程序不会认为是错误的。
代码:
def f(f): #分数的转换 a=f.numerator #分子 b=f.denominator #分母 if a%b==0: #为整数 return '%d'%(a/b) elif a<b: #为真分数 return '%d%s%d' % (a,'/',b) else: #为带分数 c=int(a/b) a = a - c * b return '%d%s%d%s%d' % (c,'’',a,'/',b)
更新并修改了主函数后代码运行结果如下:
鉴于原本的真分数运算中,算式中出现有假分数出现,故对负责假分数运算的函数进行修改
#新增的真分数结果运算函数def zfsResult(zfss,m1,m2):
if zfss == '+':
print('{} + {} = {}'.format(m1,m2,jhd(m1 + m2)))
elif zfss == '-':
print('{} - {} = {}'.format(m1,m2,jhd(m1 - m2)))
elif zfss == '*':
print('{} * {} = {}'.format(m1,m2,jhd(m1 * m2)))
elif zfss == '/':
if m2 == 0:
print('***除数不能为零***')
else:
print('{} / {} = {}'.format(m1,m2,jhd(m1 / m2)))
else:
print('输入有误,请重新输入!')
#假分数转化带分数def jhd(f): a=f.numerator b=f.denominator if a%b==0: return '%d'%(a/b) elif a<b: return '%d%s%d' % (a,'/',b) else: c=int(a/b) a = a - c * b return '%d%s%d%s%d' % (c,'’',a,'/',b)
优化后测试结果如下
psp表格
PSP表格指标 |
预估耗时(分钟) |
实际耗时(分钟) |
预估项目花费时间 |
200 |
240 |
需求分析与思路解析 |
80 |
30 |
代码实现 |
80 |
85 |
代码测试 |
35 |
38 |
代码优化 |
30 |
45 |
写博客 |
25 |
28 |