其他分享
首页 > 其他分享> > (教学类-08-01) 20220203 数字分合(固定答案5的最多题数)

(教学类-08-01) 20220203 数字分合(固定答案5的最多题数)

作者:互联网

设计思路:

(教学类-06)测20以内加减法的最大数量(优化版 20220122 VS python 20以内加减法)》的代码可以随机生成x以内的最多加法题、加法题。阿夏尝试修改代码制作“5的分合”“10的分合”的列示题及数量。

主要解决:

1、和等于5的加法题共有几题:0+5=5  1+4=5 ……(5的分合 6的分合 10的分合)
2.   差等于5的减法题共有几题(设置被减数10).:  10-5=5    9-4=5 ……()

使用方法:

1、把py代码保存在‘加法减法等于5的数量.py'内

2、py代码 

# -*- coding: utf-8 -*-  
""" 
@author: 马清新
@file: 阿夏修改练习
       和等于5的加法题共有几题.py
       差等于5的减法题共有几题(设置被减数).py
@time: 2022/2/3 20:15

# 特别说明
1.答案等于5的2个数字加法题,共有几道(5以内分合)?
2.答案等于5的2个数字减法题,共有几道?(设置被减数)
"""

import random
from re import X
from tkinter import Y

#设置问题:
choice=int(input('-----------------------------------\n'
                '您需要X以内的整数加法题还是整数减法题?\n'
                '1.加法  2.减法(请输入序号)\n'
                '------------------------------------\n'))

if choice==1:    #加法
    plusAnswer = int(input('请输入加法的答案z((≥0)):\n'))# 输入加法题答案数,比如求加法列示题的答案为5的题目共有多少题
    regNum = int(input('请输入需要生成算式的数量:\n'))# 输入需要的数量
    # 生成1个列表,列表从0开始,到算术最大和结束,因为range函数包左不包右,因此如果要包括算式最大和,必须+1
    # range函数从0开始,这样列表元素和列表索引一致,减轻算法的难度
    numList = [x for x in range(0,plusAnswer+1)]# 建立整数列表,假设SUMMAX=20 sumMax+1等于21 但实际范围就是1-20,确保列表索引和列表元素一致
    # resultList列表用于保存最后需求数量的合规算术式
    resultList = []# 储存结果的列表
    # 从列表第2个元素开始到列表最后一个元素进行循环遍历
    for x in numList[0:]:# 0等于数字1
        # 从列表第x个元素开始到列表最后一个元素进行循环遍历
        for y in numList[x:]:
            # 第1种加法,xy相等 x + y <20 列表元素开始时存在两个元素相等的情况,由于加法交换律会产生重复,所以单独进行区分
            if x+y ==plusAnswer and y!=0:
                tempStr = str(x) + ' + ' + str(y) + ' = ' #加法类型1 x+y= (x=y)
                resultList.append((tempStr, (x+y)))# 带答案的题目,如2+2=4,第70行和72行,选择 0,或者1,实现有无答案的打印结果  
                tempStr = str(y) + ' + ' + str(x) + ' = ' #加法类型1 x+y= (x=y)
                resultList.append((tempStr, (y+x)))# 带答案的题目,如2+2=4,第70行和
            
    selectList = []# 选择列表

    if regNum > len(resultList):#如果(输入算式的数量)大于(结果列表的数量)#输入题数大于实际需求,就用shuffle洗牌,
        print(f'您的需求大于最大算式生成数量!最大生成算式数量为{len(resultList)}') # 加了最大不重复算式统计值,如果输入的题数大于储存结果的列表的数量,列表加LEN
        i = len(resultList)# i的数量等于储存结果的列表的数量
        for _ in resultList:# 值在循环储存结果的列表内
            # selectList = random.sample(resultList,i) 
            selectList.append(_) #选择列表 需要添加循环储存结果列表的内容
        selectList.sort() #从小到大 正序排列 0 + 5 = 5  1 + 4 = 5 ……
        # selectList.sort(reverse=True) #从大到小 倒叙排列 5 + 0 = 5   4 + 1 = 5 ……
        
    #     for _ in selectList:   
    #         # 可选打印带答案的和不带答案啊8
    #         print(_[0])# 不带答案5
    #         # print(f'{_[0]}{_[1]}')# 带答案
        
    # else:#输入题数小于实际需求,代码自动随机抽取,不会排序,
    #     i = regNum
    #     selectList = random.sample(resultList,i)
    #     for _ in selectList:
    #         # 可选打印带答案的和不带答案啊
    #         print(_[0])# 不带答案
    #         # print(f'{_[0]}{_[1]}')# 带答案2
    print(f'共生成不重复的加法算式的题目数量{len(selectList)}')# 选择列表的数量
    print(f'最大不重复的加法算式的限制数量{len(resultList)}')#  结果列表的数量


    # 保存为TXT文件(在默认打开文件夹下,手动拷贝到Word里1
    str_title = '和等于%d的加法题共有%d题.txt' % (plusAnswer, len(resultList)) # 保存文件名60
    with open(str_title,'w') as f:#  打开TXT文件
        for a in selectList:#  #循环查找答案的内容878
            # f.write(str(a[0])+'\n')#  显示0+5=  1+4=
            f.write(str(a[0])+str(a[1])+'\n')# 显示0+5=5 1+4=5
    f.close()# #关闭TXT、

elif choice==2:     # 减法
    subAnswer = int(input('请输入想要减法的答案:  '))# 输入减法题想要的答案数,如5,如求减法列示题的答案为5的题目共有多少题
    sumMax=int(input('请输入被减数(最大数):  '))# 比如10-5=5 9-4=5 输入减法题的第一个数X10,9
    regNum = int(input('请输入需要生成算式的数量:  '))# 输入需要的数量

    # 生成1个列表,列表从0开始,到算术最大和结束,因为range函数包左不包右,因此如果要包括算式最大和,必须+1
    # range函数从0开始,这样列表元素和列表索引一致,减轻算法的难度
    numList = [x for x in range(0,sumMax+1)]# 建立整数列表,取值范围在5-10之间
    # resultList列表用于保存最后需求数量的合规算术式
    resultList = []# 储存结果的列表
    # 从列表第2个元素开始到列表最后一个元素进行循环遍历
    for x in numList[0:]:# 0等于数字1
        # 从列表第x个元素开始到列表最后一个元素进行循环遍历
        for y in numList[x:]:        
            # 第1种减法,xy不相等  x>y  
            if x - y == subAnswer and y!=x:# y-x的第一个条件x+y<20,并且x不等于y(等于就会出现答案0)
                tempStr = str(x) + ' - ' + str(y) + ' = '#减法类型1 y-x=  
                resultList.append((tempStr, (x-y)))# 带答案的题目,如3-2=1,
            elif y - x ==subAnswer: #减法条件包括 y+x小于20和y - x > 0
                tempStr = str(y) + ' - ' + str(x) + ' = '#减法类型2 y-x=  (y-x的第二个条件y-x>0)
                resultList.append((tempStr, (y-x)))# 带答案的题目,如2+2=4,
    selectList = []# 选择列表

    if regNum > len(resultList):#如果(输入算式的数量)大于(结果列表的数量)#输入题数大于实际需求,就用shuffle洗牌,
        print(f'您的需求大于最大算式生成数量!最大生成算式数量为{len(resultList)}') # 加了最大不重复算式统计值,如果输入的题数大于储存结果的列表的数量,列表加LEN
        i = len(resultList)# i的数量等于储存结果的列表的数量
        for _ in resultList:# 值在循环储存结果的列表内
            # selectList = random.sample(resultList,i) 
            selectList.append(_) #选择列表 需要添加循环储存结果列表的内容 
            # 此时是从小到大 正序排列   5- 0 = 5  6 - 1 = 5
        sorted(selectList)#从小到大 正序排列 5 - 0 = 5    6 - 1 = 5
        # reversed(selectList)#从小到大 正序排列 5 - 0 = 5    6 - 1 = 5   

        for _ in selectList:   
            # 可选打印带答案的和不带答案啊8
            # print(_[0])# 不带答案
            print(f'{_[0]}{_[1]}')# 带答案
        
    else:#输入题数小于实际需求,代码自动随机抽取,不会排序,
        i = regNum
        selectList = random.sample(resultList,i)
        for _ in selectList:
            # 可选打印带答案的和不带答案啊
            # print(_[0])# 不带答案
            print(f'{_[0]}{_[1]}')# 带答案2

            # 验证生成算式数量70
    print(f'共生成不重复的减法算式的题目数量{len(selectList)}')# 选择列表的数量
    print(f'最大不重复的减法算式的限制数量{len(resultList)}')#  结果列表的数量


    # 保存为TXT文件(在默认打开文件夹下,手动拷贝到Word里1
    str_title = '差等于%d的减法题(被减数%d)共有%d题.txt' % (subAnswer, sumMax,len(resultList))
    with open(str_title,'w') as f:#  打开TXT文件
        for a in selectList:#  #循环查找答案的内容8
            # f.write(str(a[0])+'\n')# 显示10-5= 9-5=
            f.write(str(a[0])+str(a[1])+'\n')# 显示10-5=5 9-5=5
    f.close()# #关闭TXT、

else:
    print('您输入的功能不存在。')       
        
    

3.选择1 加法题 运行

 

 4.选择加法题还是减法题 

 

5.选择加法题 输入1+回车

6.加法题 和等于5  回车

7.随意输入想要的题目数量(三位数),但最后只会保留大约6题

 

8.最后都是等于5,生成不重复加法题6题,最大不重复加法数量6题,

9.生成的TXT格式的代码

 10.在TXT里面的题目(又题目+有答案5)

  11.在TXT里面的题目(只有题目,没有答案5)

12.选择2 减法题 运行

13.差为5的列示题

 

14.设定被减数的范围:如6-1=5 7-2=5……选一个最大的被减数,这里是10以内最多有多少减法题最后答案等于5

15,题目数量依旧随便输入数字,反正最后只会生成实际题量

 16.10以内减法=5的题目数量6题

 17.减法TXT  样式一:有题目 有答案5

 

 18. 减法TXT  样式二:有题目 无答案

 

 19.输入不是1和2的数字或汉字,显示无此选项。

远期目标:

本代码设计主要是为大班数学10以内分合的题型做准备,通过微调代码内容,进一步解读和理解马先生的源代码的内容,为后续设计提供基础。感谢马先生。

    这是阿夏第9个实际运用到幼儿园教学中的Python自动化案例(教学类-08),希望能通过借鉴、实验、修改,将Python运用到幼儿园办公工作和幼儿教学中,提高工作效率,推动幼儿个性化学习和层次性学习成效。   

标签:01,08,20220203,resultList,列表,答案,加法,减法,selectList
来源: https://blog.csdn.net/reasonsummer/article/details/122778590