自动生成小学四则运算(改进)

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

原文地址:https://www.cnblogs.com/czd1/p/13742138.html