小学20以内加减法题库_小学20以内加减法题库[通俗易懂]

小学20以内加减法题库_小学20以内加减法题库[通俗易懂]【教学类-06-01】20220125测20以内加减法的最大数量(优化版20220122VSpython20以内加减法)_用户输入要测试的题目数、测试加减法的最大值

     通过以下代码可以测试20以内加减法的最多题目数量。

一、程序运行测试后的“XX以内加减法”的最大不重复题目数量。

小学20以内加减法题库_小学20以内加减法题库[通俗易懂]

 二、“XX以内加减法”的最大不重复题目数量.py

# -*- coding: utf-8 -*-  
""" 
@author: 马清新
@file: 马清新 20以内加减法(最大不重复算式值).py
@time: 2022/1/20 20:15

# 特别说明
1.根据预测试:10以内不重复132题,20以内不重复的462,50以内2652 100以内10302
样式1:如果20以内的题目数量输入了1000题,但它最终只会出现380题(共生成不重复380,最大不重复380)
样式2:如果50以内输入1000题,它最终会出现1000题(共生成不重复1000),但实际最多可以出现的1824题(最大不重复2450)

2.本次的最大值和题数可以无限大,但是考虑到电脑算力和生成时长,建议不要超过1000以内(999000题).

3.X以内 两个数加减法(X+Y= X-Y= )的最大不重复题目数量:	
X以内  加法题	减法题	加减法乱序题	排除答案0
  5	   21	  21	  42	       36
 10	   66	  66	  132	       121
 20	   231	  231	  462	       441
 50	   1326	  1326	  2652	       2601
100	   5151	  5151	  10302	       10201
"""

import random

sumMax = int(input('请输入算式最大和:'))
regNum = int(input('请输入需要生成算式的数量:'))
# 生成1个列表,列表从0开始,到算术最大和结束,因为range函数包左不包右,因此如果要包括算式最大和,必须+1
# range函数从0开始,这样列表元素和列表索引一致,减轻算法的难度
numList = [x for x in range(0,sumMax+1)]
# resultList列表用于保存最后最大数量的合规算术式
resultList = []
for x in numList[0:]:
    # 从列表第x个元素开始到列表最后一个元素进行循环遍历
    for y in numList[x:]:
        # 加和减 列表元素开始时存在两个元素相等的情况,由于加法交换律会产生重复,所以单独进行区分
        if (x == y) and (x + y <= sumMax)and (y != 0): # X或Y两者一个或者两个都不能0。没有0+0,0-0
            tempStr = str(x) + ' + ' + str(y) + ' = '
            resultList.append((tempStr, (x+y)))
            tempStr = str(x) + ' - ' + str(y) + ' = '
            resultList.append((tempStr, (x-y)))
         #加和减 查找 x + y < 算式最大和的加减法,此处考虑加法交换律,减法中去除了相减为0的情况,因为此处y>x
        elif x + y <= sumMax and (y != 0):# 第一位或者第二位都不为0,也就是没有
            tempStr = str(x) + ' + ' + str(y) + ' = '
            resultList.append((tempStr, (x+y)))
            tempStr = str(y) + ' + ' + str(x) + ' = '
            resultList.append((tempStr, (x+y)))
            tempStr = str(y) + ' - ' + str(x) + ' = '
            resultList.append((tempStr, (y-x)))
        # 考虑循环后期,x+y会打印算式要求的最大和,但是减法符合算式要求,处于严谨的考虑没有使用else
        # 减法 此处可以考虑直接使用else
        elif y - x >= 0 and y != 0: # y可能等于x ,答案为0,但没有0-0
            tempStr = str(y) + ' - ' + str(x) + ' = '
            resultList.append((tempStr, (y-x)))
        elif y - x == 0 :#等数 相加 相减等于0,不需要的话,此段注释掉
            tempStr = str(y) + ' + ' + str(x) + ' = '#减法类型3 y-x=0   
            resultList.append((tempStr, (y+x)))# 带答案的题目,如0+0=0,
            tempStr = str(y) + ' - ' + str(x) + ' = '#减法类型3 y-x=0   
            resultList.append((tempStr, (y-x)))# 带答案的题目,如0-0=0,

# 建立最终符合最终要求的算式列表9
selectList = []
if regNum > len(resultList):#输入题数大于实际需求,就用shuffle洗牌,
    print(f'您的需求大于最大算式生成数量!最大生成算式数量为{len(resultList)}')
    i = len(resultList)
    for _ in resultList:
        selectList.append(_)
    random.shuffle(selectList)    #shuffle 洗牌算法,把列表所有元素打乱,随机排列
    for _ in selectList:
        # 可选打印带答案的和不带答案啊
        print(_[0])# 不带答案
        # print(f'{_[0]}{_[1]}')# 带答案
else:#输入题数小于实际需求,代码自动随机抽取,不会排序,
    i = regNum
    selectList = random.sample(resultList,i)
    for _ in selectList:
        # 可选打印带答案的和不带答案啊
        print(_[0])# 不带答案
        # print(f'{_[0]}{_[1]}')# 带答案

# 验证生成算式数量
print(f'共生成不重复的算式{len(selectList)}')
print(f'最大不重复的算式{len(resultList)}')

# 保存为TXT文件(在默认打开文件夹下,手动拷贝到Word里1
#str_title = '2.txt' # 保存文件名TXT文件
#with open('2.txt','w') as f:#  打开TXT文件
#    for a in selectList:#  #循环查找答案的内容8
#        f.write(str(a[0])+'\n')# 写入答案内容并回车 a[0]没有答案 
#        #f.write(str(a[1])+'\n')#写入答案内容并回车 a[1]有答案
#f.close()# #关闭TXT

#2月4日修改TXT文件名
str_title = '%d以内的加减法题(共%d题).txt' % (sumMax, len(resultList)) # 保存带数字提示的题目
with open(str_title,'w') as f:#  打开TXT文件
    for a in selectList:#  #循环查找答案的内容
        f.write(str(a[0])+'\n')# 不带答案
        # f.write(str(a[1])+'\n')#只有答案
        # f.write(str(a[0])+str(a[1])+'\n')#有题目有答案  TXT里面是题目+答案,终端显示题目 无答案,因为上面选了(0)
f.close()# #关闭TXT

使用方法

小学20以内加减法题库_小学20以内加减法题库[通俗易懂]

 小学20以内加减法题库_小学20以内加减法题库[通俗易懂]

 小学20以内加减法题库_小学20以内加减法题库[通俗易懂]

 小学20以内加减法题库_小学20以内加减法题库[通俗易懂]

 验证:把‘’5以内的加减法题(共42题).TXT‘’里面的列示题放入Excel,验证数量。

       小学20以内加减法题库_小学20以内加减法题库[通俗易懂]                      小学20以内加减法题库_小学20以内加减法题库[通俗易懂]                小学20以内加减法题库_小学20以内加减法题库[通俗易懂]

 图1:乱序排列42题           图2 从小到大42题                  图3 加法题21道 减法题21道

    小结:本代码可以生成不重复的x 以内2个数字加减法混合题。数字越小,可生成题目越少,数字越大,可生成题目越多。(如果5以内题目有42题,输入10题,生成10题,输入43题,生成42题。)

小学20以内加减法题库_小学20以内加减法题库[通俗易懂]

        感谢作者马清新老师的的反复设计,让阿夏对5以内、10以内、20以内不重复的加减法的题目数量有清晰概念,确保下次为大班孩子们打印的2个数字加减法题目里能够没有重复题,实现充分练习的目标。❀❀❀❀❀❀

今天的文章小学20以内加减法题库_小学20以内加减法题库[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/87576.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注