《(教学类-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 ……()
# -*- 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('您输入的功能不存在。')
h
本代码设计主要是为大班数学10以内分合的题型做准备,通过微调代码内容,进一步解读和理解马先生的源代码的内容,为后续设计提供基础。感谢马先生。
这是阿夏第9个实际运用到幼儿园教学中的Python自动化案例(教学类-08),希望能通过借鉴、实验、修改,将Python运用到幼儿园办公工作和幼儿教学中,提高工作效率,推动幼儿个性化学习和层次性学习成效。