源码已上传至Gitee,https://gitee.com/jiayouu/codes/ve3l7gf019shrwzxambni91
一、题目:
1) 能自动生成小学四则运算题目,并且不能出现负数;
2) 能支持真分数的四则运算;
二、功能设计:
实现四则运算题目和答案的生成。
三、实现思路:
1)生成随机数
2)生成随机算数运算符
3)生成整个表达式
4)确定年级
5)确定生成题目数量
6)用户输入答案
7)输出正确答案
四、改进
1)可以生成三个数字之间的四则运算
2)除不尽的数字保留小数点后两位
3)真分数化成最简简后以分数形式显示
4)可以选择年级
五、代码
1)两位数四则运算
import random
def FourFundamental_2():
lists = [‘+‘, ‘-‘, ‘ב, ‘÷‘] #运算符
f=random.randint(0, 3)
f1=random.randint(1, 20)
f2=random.randint(1, 20)
if f== 0: #加法
result = f1 + f2
elif f == 1: #减法
f1, f2 = max(f1, f2), min(f1, f2) #比较大小,防止输出负数
result = f1 - f2
elif f== 2: #乘法
result = f1 * f2
elif f == 3: #除法
if f1>=f2:
if f1%f2 !=0:
result = round(f1/f2,2) #保留两位小数
else:
result = f1/f2
elif f1<f2:
h=hcf(f1,f2) #最大公约数
if h!=1:
result= str(int(f1/h))+‘/‘+str(int(f2/h))
else:
result = str(f1)+‘/‘+str(f2) #结果是最简分数
print(f1, lists[f], f2,end="")
return result
2)三位数四则运算
def FourFundamental_3():
lists = [‘+‘, ‘-‘, ‘ב, ‘÷‘]
x1=random.randint(0, 1)
x2=random.randint(2, 3)
f1=random.randint(1, 20)
f2=random.randint(1, 20)
f3=random.randint(1, 20)
if x1== 0: #加法
test =‘(‘+ str(f1)+lists[0]+str(f2)+‘)‘ #插入括号
result = f1+f2
if x2==2 : #加法后叠加乘法
test =‘(‘+ str(f1)+lists[0]+str(f2)+‘)‘+lists[2]+str(f3)
result = (f1+f2)*f3
elif x2==3: #加法后叠加除法
test =‘(‘+ str(f1)+lists[0]+str(f2)+‘)‘+lists[3]+str(f3)
result = round((f1+f2)/f3,2) #保留两位小数
elif x1 == 1: #减法
f1, f2 = max(f1, f2), min(f1, f2) #比较大小,防止输出负数
test = ‘(‘+str(f1)+lists[1]+str(f2)+‘)‘
result = f1 - f2
if x2==2 : #减法后叠加乘法
test =‘(‘+ str(f1)+lists[1]+str(f2)+‘)‘+lists[2]+str(f3)
result = (f1-f2)*f3
elif x2==3: #减法后叠加除法
test =‘(‘+ str(f1)+lists[1]+str(f2)+‘)‘+lists[3]+str(f3)
result = round((f1-f2)/f3,2) #保留两位小数
print(test,end="")
return result
3)生成最大公约数
def hcf(x, y):
"""该函数返回两个数的最大公约数"""
hcf=1
# 获取最小值
if x > y:
smaller = y
else:
smaller = x
for i in range(1,smaller + 1):
if((x % i == 0) and (y % i == 0)):
hcf = i
return hcf
4)运行
def init():
n=int(input("请输入年级:"))
n1=int(input("请输入需要生成的题目数量:"))
result=[0]*1000
answer=[0]*1000
if n==1 or n==2 or n==3:
for i in range(n1):
print("第",i+1,"题:")
result[i]=FourFundamental_2()
answer[i]=input("请输入你的答案:")
print("\033[1;35m正确答案是:\033[0m",result[i])
elif n==4 or n==5 or n==6:
for i in range(n1):
print("第",i+1,"题:")
result[i]=FourFundamental_3()
answer[i]=input("请输入你的答案:")
print("\033[1;35m正确答案是:\033[0m",result[i])
init()
六、运行结果


七、效能分析




七、PSP表格
|
|
预计耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
15 |
10 |
Estimate |
估计这个任务需要多少时间 |
8 |
8 |
Development |
开发 |
120 |
240 |
Analysis |
需求分析 |
5 |
10 |
Design Spec |
生成设计文档 |
10 |
10 |
Design Review |
设计复审(和同事审核设计文档) |
10 |
10 |
Coding Standerd |
代码规范(为目前的开发制定合适的规范) |
5 |
5 |
Design |
具体设计 |
5 |
10 |
Coding |
具体编码 |
30 |
60 |
Code Review |
代码复审 |
5 |
10 |
Text |
测试(自测,修改代码,提交修改) |
10 |
30 |
Reporting |
报告 |
10 |
20 |
Text Report |
测试报告 |
10 |
20 |
Size Measurement |
计算工作量 |
5 |
5 |
Postmortem & Process Improvement Plan |
事后总结,并提出过程改进计划 |
5 |
5 |
Sum |
合计 |
245 |
432 |
自动生成小学四则运算题目——软件工程(改进)
原文:https://www.cnblogs.com/1234ai/p/13726692.html