任务需求:
1.输入一个数n,能生成n道四则运算的题目
2.题目较为简单,数字在1-100之间
思路
分为三个部分,函数oprint()用于生成整数算式
def oprint():#整数四则运算
opr = ['+', '-', '×', '÷'] #运算符集合
j = random.randint(0, 3) #运算符集合下标
n1 = random.randint(0, 100) #随机生成1-100间的整数
n2 = random.randint(0, 100) #随机生成1-100间的整数
re = 0 #运算结果
if j == 0: #算式为加法
re = n1 + n2
elif j == 1: #算式为减法
n1, n2 = max(n1, n2), min(n1, n2) #n1取较大值,n2取较小值
re = n1 - n2
elif j == 2: #算式为乘法
re = n1 * n2
elif j == 3: #算式为除法
n1, n2 = max(n1, n2), min(n1, n2) #被除数n1为较大值,除数n2为较小值
while n1 % n2 != 0: #保证算式为整除
n1 = random.randint(0, 100)
n2 = random.randint(0, 100)
n1, n2 = max(n1, n2), min(n1, n2)
re = int(n1 / n2)
print(n1, opr[j], n2, '= ', end='') #输出题目
return re #返回答案
函数oprfra()用于生成分数算式
def oprfra():
opr = ['+', '-', '×', '÷'] #运算符集合
j = random.randint(0, 3) #运算符集合下标
t1 = random.randint(1, 100)
t2 = random.randint(t1, 100)
n1 = Fraction(t1, t2) #生成分数
t1 = random.randint(1, 100)
t2 = random.randint(t1, 100)
n2 = Fraction(t1, t2) #生成分数
re = 0
if j == 0: #算式为加法
re = n1 + n2
elif j == 1: #算式为减法
n1, n2 = max(n1, n2), min(n1, n2)
re = n1 - n2
elif j == 2: #算式为乘法
re = n1 * n2
elif j == 3: #算式为除法
n1, n2 = max(n1, n2), min(n1, n2)
re = n1 / n2
print(n1, opr[j], n2, '= ', end='')
return re
函数test()用于生成题目及答案
def test():
opr = ['+', '-', '×', '÷']
print('输入题库所需要的题目数量')
n=int(input()) #题目数量n
re=[] #答案集合
m=0
while m<=(n-1):
j = random.randint(0, 1) #让题目大概一般整数算式,一般分数算式
if j==0: #生成分数算式
print(m+1,end='、')
re.append(oprfra())
print(' ')
else: #生成整数算式
print(m+1,end='、')
re.append(oprint())
print(' ')
m=m+1
m=0
print('答案:')
while m<=(n-1):
print(m+1,'、',re[m]) #输出答案
m=m+1
test()
运行结果:
还能改进的地方
1.能作答,作答后判断正误并给出答案
2.整数和分数能同时计算
3.能计算括号
PSP
内容 | 预估耗时(分钟) | 实际耗时(分钟) |
估计这个任务需要多长时间 | 120 | 160 |
需求分析 | 10 | 10 |
生成设计文档 | / | / |
设计复审 | / | / |
代码规范 | / | / |
具体设计 | 100 | 100 |
代码复审 | 20 | 20 |
测试 | 10 | 10 |
测试报告 | 10 | 10 |
计算工作量 | 5 | 5 |
事后总结,并提出过程改进计划 | 5 | 5 |