百事可乐乐乐

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
import random
from fractions import Fraction

#主干函数
def useAnsult():
    print("\033[1;31m此软件能计算的类型有:1)两个整数之间加减运算  2)带有两位小数的两个数之间加减运算 3)两个分数之间加减运算\033[0m")
    print("\033[1;31m 4)两个整数之间乘除法运算  5)两个分数之间的加减运算\033[0m")
    homeworkType=int(input("请输入要生成的题目类型代号(1,2,3,4,5,6)中的其中一个:"))
    homeworkCount=int(input("请输入要生成的题目个数:"))
    level=input("\033[1;35m请输入你想计算的四则题目的等级(初级,中级,或高级):")
    if level=="初级":
        level=20
    elif level=="中级":
        level=50
    else:
        level=300
    count=0
    while count< homeworkCount:
        if  homeworkType==1:
            count=count+1
            print(""+str(count)+"道题目")
            intAddSub(level)
        elif homeworkType==2:
            count=count+1
            print(""+str(count)+"道题目")
            decAddSub(level)
        elif homeworkType==3:
            count=count+1
            print(""+str(count)+"道题目")
            proFraAddSub(level)
        elif homeworkType==4:
            count=count+1
            print(""+str(count)+"道题目")
            intMulDiv(level)
        elif homeworkType==5:
            count=count+1
            print(""+str(count)+"道题目")
            proFraMulDiv(level)
        else:
            homeworkType=input("\033[1;35m没有该题目类型,输入错误,请重新输入:\033[0m")
def intAddSub(level):
    typeCh=random.randint(0,1)      #选择加减运算符
    left=random.randint(0,level)    #生成随机整数
    right=random.randint(0,level)
    if typeCh==0:                   #加法运算
        print(str(left)+"+"+str(right)+"= ?")
        input("请输入你的答案:")
        print("\033[1;35m正确答案是:\033[0m",str(left+right))
    else:                           #减法运算
        if left< right:             #确保减法的结果不会出现负数
            middleVariable=left
            left=right
            right= middleVariable
        print(str(left)+"-"+str(right)+" = ?")
        input("请输入你的答案:")
        print("\033[1;35m正确答案是:\033[0m",str(left-right))
def decAddSub(level):
     left = random.uniform(0, level) 
     left=round(left, 2)              #生成的随机数保留两位小数
     right = random.uniform(0, level) 
     right=round(right, 2)
     typeCh=random.randint(0,1)       #选择加减运算符
     if typeCh==0:                    #加法运算
        print(str(left)+"+"+str(right)+"= ?")
        input("请输入你的答案:")
        print("\033[1;35m正确答案是:{:.2f}\033[0m".format(left+right))
     else:                            #减法运算
        if left< right:               #确保减法的结果不会出现负数
            middleVariable=left
            left=right
            right= middleVariable
        print(str(left)+"-"+str(right)+" = ?")
        input("请输入你的答案:")
        print("\033[1;35m正确答案是:{:.2f}\033[0m".format(left-right))
def proFraAddSub(level): 
    number1=random.randint(0,level)
    number11=random.randint(1,level)
    left=Fraction(number1,number11 )
    number2=random.randint(0,level)
    number22=random.randint(1,level)
    right=Fraction(number2,number22)
    typeCh=random.randint(0,1)     #选择加减运算符
    if typeCh==0:                  #加法运算
        print(str(left)+"+"+str(right)+"= ?")
        input("请输入你的答案:")
        print("\033[1;35m正确答案是:\033[0m",str(Fraction(left+right)))
    else:                         #减法运算 
        if left< right:           #确保减法的结果不会出现负数
            middleVariable=left
            left=right
            right= middleVariable
        print(str(left)+"-"+str(right)+" = ?")
        input("请输入你的答案:")
        print("\033[1;35m正确答案是:\033[0m",str(Fraction(left-right)))
#两个整数之间乘除运算
def intMulDiv(level):
    typeCh=random.randint(0,1)   #选择运乘除算符
    if typeCh==0:                #乘法
        left=random.randint(0,level)
        right=random.randint(0,level)
        print(str(left)+"*"+str(right)+"= ?")
        input("请输入你的答案:")
        print("\033[1;35m正确答案是:\033[0m",str(left*right))
    else:                         #除法
        if level<300:
            right=random.randint(1,level)   
            left=right*random.randint(0,4)   #此处考虑到用户如果选择初级或中级的除法计算,计算结果是整数比较好,故设除数是被除数的倍数
        else:
            left=random.randint(1,level)
            right=random.randint(1,level)
        print(str(left)+"÷"+str(right)+" = ?")
        input("请输入你的答案:")
        if left%right==0:        #判断是否能整除
            print("\033[1;35m正确答案是:\033[0m",str(int(left/right)))
        else:
            print("\033[1;35m正确答案是:\033[0m",str(Fraction(left,right)))
def proFraMulDiv(level):
    number1=random.randint(0,level)
    number11=random.randint(1,level)
    left=Fraction(number1,number11 )
    typeCh=random.randint(0,1)      #选择乘除运算符
    if typeCh==0:                   #乘法运算
        number2=random.randint(0,level)
        number22=random.randint(1,level)
        right=Fraction(number2,number22)
        print(str(left)+"*"+str(right)+"= ?")
        input("请输入你的答案:")
        print("\033[1;35m正确答案是:\033[0m",str(left*right))
    else:                          #除法运算 
        number2=random.randint(1,level)
        number22=random.randint(1,level)
        right=Fraction(number2,number22)
        print(str(left)+"÷"+str(right)+" = ?")
        input("请输入你的答案:")
        print("\033[1;35m正确答案是:\033[0m",str(Fraction(left,right)))
useAnsult()

PSP流程

PSP阶段

自己所花时间百分比

工程师所花时间百分比

计划

11

6

  •  明确需求和其他相关因素,估计每个阶段的时间成本

11

6

开发

83

88

  •  需求分析

6

10

  •  生成设计文档

5

6

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

4

6

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

5

3

  •  具体设计

9

12

  •  具体编码

38

21

  •  代码复审

4

9

  •  测试(自测、修改代码、修改提交)

11

21

报告

7

6

  •  测试报告

2

2

  •  计算工作量

3

1

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

2

3

项目要求

  • 能自动生成小学四则运算题目

解题思路

  • 了解四则运算的基本法则
  • 利用随机函数随机生成数字以及运算符
  • 用户输入答案程序需要判断答案是否正确

设计实现及代码说明如上

运算结果:

 

posted on 2021-09-27 20:03  煎饼果子*  阅读(45)  评论(0)    收藏  举报