设计思路:
《(教学类-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? 回车
h?
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运用到幼儿园办公工作和幼儿教学中,提高工作效率,推动幼儿个性化学习和层次性学习成效。? ?
|