zoukankan      html  css  js  c++  java
  • 自动生成小学四则运算题目

    github项目地址: https://github.com/jerryswagyyy/Airdior/blob/master/zuoye1.py

    自动小学简单四则运算题,

    编程语言python,

    解题思路:

    小学的四则运算为加减乘除,整数和真分数为主,

    先生成随机数 和 符号

    再把算式通过函数表达出来

    代码如下:

    import random
    from fractions import Fraction

    def newint(fh,n1,n2): #四则运算
    # opr = ['+','-','*','/']
    #fh = random.randint(0,3) #选择符号
    val = 0 #结果
    if fh == 0:
    val = n1+n2
    elif fh == 1:
    #n1,n2 = max(n1,n2),min(n1,n2)
    val = n1-n2
    elif fh == 2:
    val = n1*n2
    elif fh == 3:
    val = int(n1/n2)
    #print(n1,opr[fh],n2)
    return val

    def newfra(): #真分数四则运算
    opr = ['+', '-', '*', '/']
    fh = random.randint(0, 3) #随机选择符号
    t1 = random.randint(1, 10) #
    t2 = random.randint(t1, 10) #
    n1 = Fraction(t1, t2) #生成一个真分数
    t1 = random.randint(1, 10)
    t2 = random.randint(t1, 10)
    n2 = Fraction(t1, t2)
    val = 0
    if fh == 0:
    val = n1 + n2
    elif fh == 1:
    n1, n2 = max(n1, n2), min(n1, n2)
    val = n1 - n2
    elif fh == 2:
    val = n1 * n2
    elif fh == 3:
    n1, n2 = max(n1, n2), min(n1, n2)
    val = n1 / n2
    print(n1, opr[fh], n2, '= ', end='')
    print('')
    return val

    def main(): #主函数
    print('小学四则运算')
    n = 1
    if n==1:
    print('input "0000" to Quit')
    while True:
    fh = random.randint(0, 4)
    if fh == 0:
    print('真分数运算:')
    rjg = newfra()
    jg = input()
    if jg == '0000':
    break;
    sr = Fraction(jg)
    if sr == rjg:
    print('right')
    else:
    print('error. the Tight answer is', rjg)
    print('')
    else:
    print('整数运算')
    rjg = suanfa()
    jg = input()
    if jg == '0000':
    break;
    sr = int(jg)
    if sr == rjg:
    print('right')
    else:
    print('error. the Tight answer is', rjg)
    print('')

    #调试
    def suanfa():
    n = random.randint(2,5)
    # print('随机生成个数:',n)
    num = [0,0,0,0,0]
    fh = [0,0,0,0,0]
    opr = ['+','-','*','/']
    count = 0
    val = 0

    for i in range(n): #产生随机数
    num[i] = random.randint(1,10)

    for i in range(n-1): #产生随机符号
    fh[i] = random.randint(0,3)

    for i in range(n): #除法不出现小数
    #print(opr[fh[i]])
    if i < n-1:
    #if fh[i] == 1:
    #num[i],num[i+1] = max(num[i],num[i+1]),min(num[i],num[i+1])
    if fh[i] == 3:
    num[i],num[i+1] = max(num[i],num[i+1]),min(num[i],num[i+1])
    while (num[i]%num[i+1] != 0):
    #num[i] = random.randint(1,10)
    num[i+1] = random.randint(1,10)
    #print("numlen", len(num) , " " , i+1)
    num[i],num[i+1] = max(num[i],num[i+1]),min(num[i],num[i+1])

    str_formula = ""
    for i in range(n): #输出表达式
    if i < n-1:
    str_formula += str(num[i]) + opr[fh[i]]
    else:
    str_formula += str(num[i]) + '='
    print(str_formula)

    i = 0
    p = 0
    while(p<n-1): #乘除法
    #print('i=',i)
    p = p+1
    if fh[i] == 2 or fh[i] == 3:
    num[i] = newint(fh[i],num[i],num[i+1])
    #print('i=',i,'num[i]=',num[i])
    del num[i+1]
    del fh[i]
    #print(i,num[i+1])
    count+=1
    i = i-1
    #print('i=',i+1, 'p', p,'num[i]=',num[i+1], str(num))
    i=i+1
    #print('p=',p)

    n = n-count
    # print('')
    val = newint(fh[0],num[0],num[1])
    for i in range(n-2): #加减法
    # print(val,opr[fh[i+1]],num[i+2])
    val = newint(fh[i+1],val,num[i+2])
    # print(val)

    #print('值:', int(eval(str_formula)))
    #print('值:', val)
    return val

    if __name__ == '__main__':
    main()

     主要函数:

    def newint(fh,n1,n2):    #四则运算

    def newfra():     #真分数四则运算

    def suanfa():  调试程序

    PSP2.1

    Personal Software Process Stages

    预估耗时(分钟)

    实际耗时(分钟)

    Planning

    计划

     60分钟

     5小时

    · Estimate

    · 估计这个任务需要多少时间

     72小时

     72小时

    Development

    开发

     32小时

     42小时

    · Analysis

    · 需求分析 (包括学习新技术)

     10小时

     15小时

    · Design Spec

    · 生成设计文档

     2小时

     3小时

    · Design Review

    · 设计复审 (和同事审核设计文档)

     2小时

     1.5小时

    · Coding Standard

    · 代码规范 (为目前的开发制定合适的规范)

     3小时

     2.5小时

    · Design

    · 具体设计

     5小时

     4小时

    · Coding

    · 具体编码

     5小时

     7小时

    · Code Review

    · 代码复审

     5小时

     4小时

    · Test

    · 测试(自我测试,修改代码,提交修改)

     5小时

     6小时

    Reporting

    报告

     3小时

     3小时

    · Test Report

    · 测试报告

     60分钟

     69分钟

    · Size Measurement

    · 计算工作量

     30分钟

     30分钟

    · Postmortem & Process Improvement Plan

    · 事后总结, 并提出过程改进计划

     30分钟

     30分钟

    合计

     

     36小时

     50小时

  • 相关阅读:
    treap模板
    Codeforces Round #446 (Div. 2)
    BZOJ 1001: [BeiJing2006]狼抓兔子 (最小割)
    NOIP2017总结
    Python 操作 Mysql 模块
    poj 3660 Cow Contest (传递闭包)
    poj 1964 Cow Cycling(dp)
    poj 3671 Dining Cows (Dp)
    cogs 线型网络(状压dp)
    codevs 2800 送外卖(状压dp)
  • 原文地址:https://www.cnblogs.com/hhhkm/p/13703035.html
Copyright © 2011-2022 走看看