问题背景
随机自动生成多个的两位数加减混合运算题。
例如:32+48-46=? 77-33+84=?
要求:
1、三个两位数加减混合运算。
2、三个两位数都是随机生成。
3、加减符号随机生成。
4、计算结果尽量不为负数。
5、没有完全相同的题目。
6、没有重复的题目,三个两位数随机生成、加减符号随机生成。
7、输出到文档
代码实现
import pandas
import random
import time
def create(nums):
"""
:param nums: 需要生成个数
:return: 返回元组,含等式和答案
"""
#存储等式
list_equation = []
#存储答案
list_result = []
for i in range(nums):
#jishutansuozhe判断计算结果,不能为负值,若为负值,就重新生成hhd1988
result = -1
while result < 0:
# 随机生成第1位,20以内
first = random.randint(0, 20)
# 随机生成第1个加减符号
first_symbol = random.choice(["+", "-"])
# 随机生成第2位,20以内
second = random.randint(0, 20)
# 随机生成第2个加减符号hhd1988
second_symbol = random.choice(["+", "-"])
# 随机生成第3位,20以内
three = random.randint(0, 20)
equation = str(first) + first_symbol + str(second) + second_symbol + str(three) + "="
if first_symbol == "+":
if second_symbol == "+":
result =first + second + three
else:
result = first + second - three
else:
if second_symbol == "+":
result =first - second + three
else:
result = first - second - three
if result > 0:
#判断是否重复
if equation not in list_equation:
list_equation.append(equation)
list_result.append(equation+str(result))
break
return (list_equation,list_result)
def write(list):
"""
:param list:
:return:
"""
#修改原list-->二维数组,保证每行输出3个等式
new_lists = []
for i in range(0,len(list),3):
new_lists.append(list[i:i+3])
#在每个等式后面增加一个空格,用于填写答案
for i in range(len(new_lists)):
for j in range(len(new_lists[i])):
new_lists[i].insert(2*j+1,"")
print(new_lists)
d = pandas.DataFrame(new_lists)
timestr = time.strftime('%Y%m%d-%H%M%S', time.localtime(time.time()))
filename = "加减混合运算计算式" + timestr + ".csv"
#判断只有等式
d.to_csv(filename, index=False, mode='a', header="")
if __name__ == '__main__':
#######输入需要生成等式的个数,技术探索者#######
num = 200
t = create(num)
#随机生成等式
write(t[0])
#技术探索者随机生成等式和答案,write(t[0])和write(t[1])需要同时执行,因为随机生成,若分别执行,两者等式和答案不一致
write(t[1])
输出示例展示