python输出3位数加减法(随机)

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.## 标题结果

在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值