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

最新文章

  1. html+ccs3太阳系行星运转动画
  2. AC日记——最小的N个和 codevs 1245
  3. 冰冻三尺非一日之寒--web框架Django(三)
  4. CoCreateInstance调用返回代码0x80040154的一种解决方法
  5. 痛苦的vsftpd配置
  6. mysql 备份软件 Xtrabackup 的 xtrabackup_binlog_pos_innodb和xtrabackup_binlog_info 文件区别
  7. 将类型(int,string,…)转换为 T 类型
  8. BZOJ-2049 Cave洞穴勘测 动态树Link-Cut-Tree (并查集骗分TAT)
  9. Python练习题 024:求位数及逆序打印
  10. HDOJ/HDU 1161 Eddy&#39;s mistakes(大写字母转换成小写字母)
  11. python实现刷博器(适用于新浪、搜狐)
  12. PHP常用代码大全(新手入门必备)
  13. python之路第二天 随便记记 今天主要很郁闷
  14. 自学Python之路
  15. Java并发编程笔记4-线程池
  16. iOS NFC
  17. spring-mybatis的整合
  18. (7)udp-socket
  19. SpringBoot 4.SpringBoot 整合 devtools 实现热部署
  20. Cesium学习2:如何从零开始在Eclipse IDE,Java语言搭建cesium开发环境

热门文章

  1. 制作win10装机U盘
  2. centos7.6 dokcer-compose在线和离线安装
  3. 提交from表单,method与浏览器请求显示不一致
  4. ESP_IDF中使用TFT_eSPI库驱动ST7789V
  5. lua-table面向对象
  6. gdb 常用命令总结
  7. anaconda在sys.path删除~/.local/lib
  8. maridb数据库表及字段增删改
  9. Word09 会计电算化节节高升office真题
  10. 【论文写作】Vancouver style