结果展示
背景需求:
二位数:去0
三位数(需要排除很多0)
解决思路
一、把数字改成三位数
二、对数组内的题目,8种可能性进行去“0”处理
1、十位数(去百位数0)+十位数(去百位数0)——(12+13)
2、个位数(去百位数0、去十位数0)+个位数(去百位数0、去十位数0)——(3+5)
3、十位数(去百位数0)+个位数(去百位数0、十位数0)——(12+1)
4、个位数(去百位数0、十位数0)+十位数去(百位数0)——(3+16)
5、百位数+个位数(去百位数0、十位数0)——(101+1)
6、个位数(去百位数0、十位数0)+百位数——(2+105)
7、百位数+十位数(去百位数0)——(100+10)
8、十位数(去百位数0)+百位数——(10+110)
按照原数组的位置排序()
代码展示:
'''
3位数去0 所有加法,从小到大排序(0+1,0+2,而不是0+1,0+10)
作者:阿夏
时间:2023年11月26日 12:00
'''
n=int(input('X以内加法(110)\n'))
# 5以内“+”题共21题
P=[]
for a in range(0,n): # 起始数字就是10,就是排除掉0-10之间的数字
for b in range(0,n): # 起始数字为0,
if 0<=a+b<n+1:
# print('{}+{}='.format(a,b))
P.append('{}+{}='.format('%03d'%a,'%03d'%b))
if 0<=b+a<n+1:
# print('{}+{}='.format(a,b))
P.append('{}+{}='.format('%03d'%b,'%03d'%a))
else:
pass
P =list(set(P)) # 排除重复,但随机打乱
P.sort() # 小到大排序
print(P)
# for i in P :
# print(i)
# ['0+0=', '0+1=', '0+2=', '0+3=', '0+4=', '0+5=', '1+0=', '1+1=', '1+2=', '1+3=', '1+4=', '2+0=', '2+1=', '2+2=', '2+3=', '3+0=', '3+1=', '3+2=', '4+0=', '4+1=', '5+0=']
# “+”题生成都是按小到大排列的,不需要sort排序
print('0-100之间的加法题共有 {} 题'.format(len(P)) ) # 21
P2=[]
for i in P: # 每个内容是000+000=,一共6个字符
# 十+十、个+个、
if i[0]=='0'and i[1]!='0' and i[4] =='0'and i[5]!='0' : # 第1个数字的第1个是0 第2个数字的第1个是0
P2.append(i[1:4]+i[5:])
print(i[1:4]+i[5:]) # 全部是XX+XX= 十位数+十位数
if i[0]=='0'and i[1]=='0' and i[4] =='0'and i[5]=='0' : # 第1个数字的第1\2个是0 第2个数字的第1\2个是0
P2.append(i[2:4]+i[6:])
print(i[2:4]+i[6:]) # 全部是X+X= 个位数+个位数
# 十+个、个+十
if i[0]=='0'and i[1]!='0' and i[4] =='0'and i[5]=='0' : # 第1个数字的第1个是0 第2个数字的第1\2个是0
P2.append(i[1:4]+i[6:])
print(i[1:4]+i[6:]) # 全部是XX+X= 十位数+个位数
if i[0]=='0'and i[1]=='0' and i[4] =='0'and i[5]!='0' : # 第1个数字的第1\2个是0 第2个数字的第1\2个是0
P2.append(i[2:4]+i[5:])
print(i[2:4]+i[5:]) # 全部是X+XX= 个位数+十位数
# 百+个、个+百
if i[0]!='0' and i[4] =='0'and i[5]=='0' :
P2.append(i[0:4]+i[6:])
print(i[0:4]+i[6:]) # 全部是XXX+X= 百位数+个位数
if i[0]=='0' and i[1] =='0'and i[4]!='0':
P2.append(i[2:])
print(i[2:]) # 全部是X+XXX= 个位数+百位数
# 百+十,十+百
if i[0]!='0' and i[4] =='0'and i[5] !='0':
P2.append(i[0:4]+i[5:])
print(i[0:4]+i[5:]) # 全部是XXX+XX= 百位数+十位数
if i[0]=='0' and i[1]!='0' and i[4] !='0':
P2.append(i[1:])
print(i[1:]) # 全部是XX+XXX= 十位数+百位数
# if i[0]!='0': # 第1个数字的第1\2个是0 第2个数字的第1\2个是0
# P2.append(i[0:])
# print(i[2:4]+i[5:]) # 全部是X+XX= 个位数+十位数
print(P2)
print('0-110之间的加法题(正序排序)共有 {} 题'.format(len(P2)) ) # 21
for e in P2:
print(e)
存在问题:
目前看,还是必须用'%03d'%i,把数学题从小到大排序,
然后想办法删掉百位数、十位数前面的0。
因为SORT排序注定是按数字小到大排序,没有智能到可以判断0+0=、0+10=,中间还是9题,