Python:随机生成多个两位数加减混合运算计算式

问题背景

随机自动生成多个的两位数加减混合运算题。

例如: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])

输出示例展示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术探索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值