ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

个人PSP(四则运算)升级

2020-09-27 09:02:12  阅读:297  来源: 互联网

标签:right level 四则运算 升级 str print 033 PSP left


源代码管理平台Gitbee地址:https://gitee.com/chen-haijin/

1.题目要求:能自动生成小学四则运算题目,且每一道题目的运算结果不能为负。除了支持整数运算外,还要支持真分数四则运算。

2.工具清单:

   1)编程语言:python

   2) 效能分析工具:profile

   3)源代码管理平台:Gitbee

3.PSP表格

    预计耗时(分钟) 实际耗时(分钟)
Planning 计划 20 20
Estimate 估计这个任务需要多少时间 5 5
Development 开发 80 90
Analysis 需求分析 10 10
Design Spec 生成设计文档 / /
Design Review 设计复审(和同事审核设计文档) / /
Coding Standerd 代码规范(为目前的开发制定合适的规范) / /
Design 具体设计 30 30
Coding 具体编码 100 100
Code Review 代码复审 10 15
Text 测试(自测,修改代码,提交修改) 20 20
Reporting 报告 20 20
Text Report 测试报告 10 10
Size Measurement 计算工作量 5 5
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 5
Sum 合计 305 330

4.功能升级

       原来自动生成四则运算题目的设计过于简单(上一条博客),生成的题目四则运算只是两个整数的运算,没有出现分数和小数的运算。为此我在功能上进行了升级。升级后的功能分为:1)两个整数之间加减运算       2)带有两位小数的两个数之间加减运算      3)两个分数之间加减运算     4)两个整数之间乘除法运算      5)两个分数之间的加减运算。

       另外我还增加了一个用户可以自己选择题目等级的选择,题目等级分为:

               1)初级 :参与四则运算的两个数的取值范围位0~20

               2)中级 :   参与四则运算的两个数的取值范围位0~50

               3)高级:   参与四则运算的两个数的取值范围位0~300

5.代码说明

1)主干函数

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")

2)两个整数之间加减运算函数

#两个整数之间加减运算
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))

3)带有两位小数的两个数之间加减运算函数

#带有两位小数的两个数之间加减运算
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)) 

4)两个分数之间的加减运算 函数

#两个分数之间的加减运算  
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)))

5)两个整数之间乘除运算函数

#两个整数之间乘除运算
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)))

6)两个分数之间乘除计算函数

#两个分数之间乘除计算
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)))

7)运行主干函数

useAnsult()

 6.测试运行

 

 

 

 

  7.性能分析

 

 

标签:right,level,四则运算,升级,str,print,033,PSP,left
来源: https://www.cnblogs.com/2987831760qq-com/p/13737185.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有