python输出3位数加减法(随机)
1.需求
怎么设计公式,可以随机自动生成多个的三位数加减混合运算题?适用小学三年级。
例如:458+254-179=? 892-785+684=?
要求:
1、三个三位数加减混合运算。
2、三个三位数都是随机生成。
3、加减符号随机生成。
4、计算结果尽量不为负数。
5、没有完全相同的题目。
没有重复的题目,三个三位数随机生成、加减符号随机生成。
2.源码
import pandas
import random
"""
怎么设计公式,可以随机自动生成多个的三位数加减混合运算题?适用小学三年级。
例如:458+254-179=? 892-785+684=?
要求:
1、三个三位数加减混合运算。
2、三个三位数都是随机生成。
3、加减符号随机生成。
4、计算结果尽量不为负数。
5、没有完全相同的题目。
没有重复的题目,三个三位数随机生成、加减符号随机生成。"""
def creat(nums):
"""
:param nums: 需要生成个数
:return: 返回元组,含等式和答案
"""
list_equation = []#存放等式
list_result = [] #存放答案
for i in range(nums):
#判断计算结果,不能为负值,若为负值,就重新生成
result =-1
while result < 0:
first = random.randint(100, 1000) # 随机生成第1位
first_symbol = random.choice(["+", "-"]) # 随机生成第1个加减符号
second = random.randint(100, 1000) # 随机生成第2位
second_symbol = random.choice(["+", "-"]) # 随机生成第2个加减符号
three = random.randint(100, 1000) # 随机生成第3位
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 writ(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)
#判断只有等式
d.to_csv('含答案的等式计算式.csv', index=False, mode='a', header="")
if __name__ == '__main__':
t = creat(18)#####***输入需要生成等式的个数***
#随机生成等式
writ(t[0])
#随机生成等式和答案,writ(t[0])和writ(t[1])需要同时执行,因为随机生成,若分别执行,两者等式和答案不一致
writ(t[1])
3.## 标题结果