Github地址:https://github.com/kelikel/work_first
1)题目
能自动生成小学四则运算题目(结果不出现负数);
除了整数外,还要支持真分数的四则运算。
2)PSP
3)需求分析:
满足小学的基础计算且不超纲;
随机生成四则运算题,结果不为负数;
存在真分数的计算;
可生成答案进行对比;
4)
解题思路:
小学的运算只有加减乘除,且需要满足不出现负数的情况,因为运算中减法可能出现负数情况,需要对随机生成的两个数字进行比较,将较大的作为被减数,较小的作为减数,解决负数出现的问题;
为解决真分数问题,调用 fractions
库进行真分数运算;
5)设计实现:
newint( )函数生成整数四则运算
newfra( )函数生成真分数四则运算
newtest( )函数生成题库及答案
6)代码说明:
def newint(): #生成整数四则运算函数
opr = ['+', '-', '×', '÷']
fh = random.randint(0, 3)
n1 = random.randint(1, 20)
n2 = random.randint(1, 20)
rjg = 0
if fh == 0:
rjg = n1 + n2
elif fh == 1:
n1, n2 = max(n1, n2), min(n1, n2) #减法排除负数结果干扰
rjg = n1 - n2
elif fh == 2:
rjg = n1 * n2
elif fh == 3:
n1, n2 = max(n1, n2), min(n1, n2)
while n1 % n2 != 0:
n1 = random.randint(1, 10)
n2 = random.randint(1, 10)
n1, n2 = max(n1, n2), min(n1, n2) #除法不出现余数
rjg = int(n1 / n2)
print(n1, opr[fh], n2, '= ', end='')
return rjg
真分数函数除调用fractions 外与四则运算相似
7)测试运行: