源代码管理平台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.性能分析

个人PSP(四则运算)升级的更多相关文章

  1. 代码规范、代码复审、PSP

    作业三: 代码规范.代码复审.PSP 代码规范 代码规范的重要性 一.规范的代码可以促进团队合作  一个项目大多都是由一个团队来完成,如果没有统一的代码规范,那么每个人的代码必定会风格迥异.且不说会存 ...

  2. 软件工程课堂作业(二)续——升级完整版随机产生四则运算题目(C++)

    一.设计思想: 1.根据题目新设要求,我将它们分为两类:一类是用户输入数目,根据这个数目改变一系列后续问题:另一类是用户输入0或1,分情况解决问题. 2.针对这两类要求,具体设计思路已在上篇博文中写出 ...

  3. 第四周四则运算3 PSP表格

    PSP2.1 Personal Software Process Stages time Plan 计划   -Estimate 整数四则运算 分数四则运算 括号 括号四则运算 在主函数中调用 30m ...

  4. 四则运算3+PSP

    题目要求: 1.要求在第二次实验(四则运算2)的基础上加上其他功能. 2.要求能够在每个运算式打印出来后,用户能够进行输入计算的答案,并且程序进行判断给出用户输入的答案的正确性. 3.要求实现四则混合 ...

  5. PSP个人项目耗时对比记录表:四则运算

    Personal Software Process Stages Time(%) 计划 5    •估计这个任务需要多长时间 5 开发 60    •需求分析  5    •生成设计文档  5     ...

  6. 20170928-3 四则运算psp

    1.本周psp: 2.本周进度条: 3.累计进度图(折线图): 4.psp饼状图:

  7. PROJECT | 四则运算UI设计 - PSP表格&需求分析

    PSP表格(TP版) 需求分析 [GUI编程语言选择] 考虑到Java编写GUI效率偏低且界面不算特别美观(即使有Windowbuilder插件帮助),所以我们使用控件更多,开发效率更高,具有集成开发 ...

  8. 四则运算第三次 PSP

     

  9. 基于GUI的四则运算

    基于GUI的四则运算 李志强 201421123028 连永刚 201421123014 林方言 201421123023 coding 地址 https://git.coding.net/lizhi ...

  10. 结队编程--基于GUI的四则运算

    coding地址 https://git.coding.net/lizhiqiang0x01/GUI-sizeyunsuan.git 李志强 201421123028 连永刚 201421123014 ...

随机推荐

  1. java向上转型知识点收录

    package tex2polymorphism; /*总结如下: * 对于多态,可以总结它为: 一.使用父类类型的引用指向子类的对象: 二.该引用只能调用父类中定义的方法和变量: 三.如果子类中重写 ...

  2. 学习高速PCB设计,这些走线方式你要知道! 高速射频百花潭 2022-01-21 08:53

    1.电源布局布线相关 数字电路很多时候需要的电流是不连续的,所以对一些高速器件就会产生浪涌电流. 如果电源走线很长,则由于浪涌电流的存在进而会导致高频噪声,而此高频噪声会引入到其他信号中去. 而在高速 ...

  3. linux用户权限与组

    less  /etc/passwd 查看用户文件 passwd tom[用户名] 修改密码 useradd suguihua[用户名] 新增用户名 vim  /etc/passwd 将xiaoqian ...

  4. flutter卡在Running Gradle task 'assembleDebug'...

    https://www.cnblogs.com/lovewhatIlove/p/16323828.html

  5. fiddler设置自动响应

    使用fiddler 设置AutoResponder 1.auto responder:自动响应器,设置并开启后将把请求接口拦截并返回 2.enable rules:开启规则,开启后规则启用 3.unm ...

  6. 【ZYNQ学习】ZYNQ架构介绍

    在上一篇博客中,主要介绍了ZYNQ的基本信息以及如何在vivado上实现自己的设计,但是在实际应用中,掌握ZYNQ的架构是必要的,因此在这篇博客中主要记录一下ZYNQ的架构 本篇博客的主要参考是ZYN ...

  7. 1255. 得分最高的单词集合 (Hard)

    问题描述 1255. 得分最高的单词集合 (Hard) 你将会得到一份单词表 words,一个字母表 letters (可能会有重复字母),以及每个字母对应的得分情况表 score. 请你帮忙计算玩家 ...

  8. mariadb(mysql) redis

    mariadb(mysql) 安装 winodows 略 linux 用yum下载安装,先添加yum源,阿里的yum源mariadb版本比较老,要新版本的还是要用官方的源,具体的官方yum源最好去官网 ...

  9. 面试视频知识点整理1-12(渲染机制,js运行机制,页面性能,错误监控)

    技巧(赞美面试官研究的比较深) 1.渲染机制 什么是DOCTYPE及作用? DTD(文档类型定义)是一系列的语法规则,用于定义文件类型.浏览器会根据它来判断文档类型,决定使用何种协议来解析以及切换浏览 ...

  10. vue编辑修改,点击取消操作时,table内的内容不变

    1.父组件内  2.子组件内(使用JSON.parse(JSON.stringify(xxx值)))  进行深拷贝