算法——实现随机拿到30道不重复的20以内的加减法题目

题目描述

此时需要给小孩开发一个小程序,可以随机得到30道不重复的20以内的加减法题目,即对于题目来说,无论和还是差或者加数、减数、被减数均要小于20,且要大于等于0的整数。

下面用python实现了下面该题目:

import random

def add():
    '''
    获取随机的加法
    :return:
    '''
    a = random.randint(0, 19)
    b = random.randint(0, 19-a)
    return a, b, a+b

def sub():
    '''
    获取随机的减法
    :return:
    '''
    a = random.randint(0, 19)
    b = random.randint(0, a)
    return a, b, a-b

def test(n):
    '''
    获取n道20以内的加减法题目,无重复
    :param n:
    :return:
    '''
    res_d = {0: [], 1: []}
    sig_d = {0: add, 1: sub}
    i = 0
    while i < n:
        sig = random.randint(0, 1)
        method = sig_d[sig]
        a, b ,r = method()
        while [a, b, r] in res_d[sig] or [b, a, r] in res_d[sig]:
            a, b, r = method()
        res_d[sig].append([a, b, r])
        i += 1
    return res_d

if __name__ == '__main__':
    res_d = test(30)
    for key, value in res_d.items():
        sign = '-'
        if key == 0:
            sign = '+'
        for a, b, r in value:
            print(a, sign, b, '=', r)

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值