四则运算
任务需求:
1.输入一个数n,能生成n道四则运算的题目
2.题目较为简单,整数算式数字在1-100之间,分数算式数字在1-10之间
思路
分为三个部分,函数oprInt()用于生成整数算式
def oprInt():#整数四则运算
opr = ['+', '-', '×', '÷'] #运算符集合
j = random.randint(0, 3) #运算符集合下标
n1 = random.randint(1, 100) #随机生成1-100间的整数
n2 = random.randint(1, 100) #随机生成1-100间的整数
re = 0 #运算结果
if j == 0: #算式为加法
result = n1 + n2
elif j == 1: #算式为减法
n1, n2 = max(n1, n2), min(n1, n2) #n1取较大值,n2取较小值
result = n1 - n2
elif j == 2: #算式为乘法
result = n1 * n2
elif j == 3: #算式为除法
n1, n2 = max(n1, n2), min(n1, n2) #被除数n1为较大值,除数n2为较小值
while n1 % n2 != 0: #保证算式为整除
n1 = random.randint(1, 100)
n2 = random.randint(1, 100)
n1, n2 = max(n1, n2), min(n1, n2)
result = int(n1 / n2)
print(n1, opr[j], n2, '= ') #输出题目
print('请输入你的答案:')
myResult=eval(input()) #从键盘输入答案
if(myResult==result): #判断输入的答案正误
print('答案正确')
else:
print('答案错误,正确答案为:',result)
return result
函数oprFra()用于生成分数算式
def oprFra():
opr = ['+', '-', '×', '÷'] #运算符集合
j = random.randint(0, 3) #运算符集合下标
fenzi1 = random.randint(1, 10)
fenmu1 = random.randint(fenzi1, 10)
n1 = Fraction(fenzi1,fenmu1) #生成分数
fenzi2 = random.randint(1, 10)
fenmu2 = random.randint(fenzi2, 10)
n2 = Fraction(fenzi2,fenmu2) #生成分数
result = 0
if j == 0: #算式为加法
result = n1 + n2
elif j == 1: #算式为减法
n1, n2 = max(n1, n2), min(n1, n2)
result = n1 - n2
elif j == 2: #算式为乘法
result = n1 * n2
elif j == 3: #算式为除法
n1, n2 = max(n1, n2), min(n1, n2)
result = n1 / n2
print(n1, opr[j], n2, '= ')
print('请输入你的答案:')
fenzi,fenmu=map(int,input().split()) #从键盘同时输入分子和分母
myResult=Fraction(fenzi,fenmu)
if(myResult==result):
print('答案正确')
else:
print('答案错误,正确答案为:',result)
return result
函数newTest()用于生成题目及答案
def newTest():
print('输入题库所需要的题目数量')
n=int(input()) #题目数量n
print('----------------------')
result=[] #答案集合
m=0
while m<=(n-1):
j = random.randint(0, 1) #让题目大概一般整数算式,一般分数算式
if j==0: #生成分数算式
print(m+1,end='、')
result.append(oprFra())
print(' ')
else: #生成整数算式
print(m+1,end='、')
result.append(oprInt())
print(' ')
m=m+1
m=0
print('----------------------')
print('答案:')
while m<=(n-1):
print(m+1,'、',result[m]) #输出答案
m=m+1
newTest()
运行结果:

还能改进的地方
1.整数和分数能同时计算
2.能计算括号
PSP2.1
| 内容 | 预估耗时(分钟) | 实际耗时(分钟) |
| 估计这个任务需要多长时间 | 180 | |
| 需求分析 | 10 | |
| 生成设计文档 | / | |
| 设计复审 | / | |
| 代码规范 | / | |
| 具体设计 | 100 | |
| 代码复审 | 20 | |
| 测试 | 30 | |
| 测试报告 | 10 | |
| 计算工作量 | 5 | |
| 事后总结,并提出过程改进计划 | 5 |

浙公网安备 33010602011771号