【教学类-06-12】20231126 (一)如何让加减乘除题目从小到大排序(以1-20之间加法为例,做正序排列用)

结果展示

优化后

优化前

背景需求:

生成列表

单独抽取显示题目排序方法

存在问题:

我希望 0+0 0+1 0+2......这样排序,但是实际上,除了第一个加数会从小到大排序,第二个被加数的第十位数和个位数都会从小到大排序,也就是0+0后面,先出现的是0+10(不是0+1),等10-19排完了,在轮到0+1,随后0+20出现,接着才是0+2、0+3

也就是说:0+1 、0+10这两个数字,默认是两位数字0+10先出现,第二个数字双位数都走完了,才会轮到0+1这种单个数。

需求:

如何让0+0 0+1 ......0+9 0+10 0+11 0+20,然后在是1+0......1+19这样排序。

样式:0+(0-20),1+(0-19)......18+(0-2),19+(0-1),20+(0)

解决思路

一、把数字改成两位数

按需要的顺序排列,写入数组

二、对数组内的题目,四种可能性进行去"0"处理

1、个位数去0+个位数去0(2+3)

2、个位数去0+十位数(3+15)

3、十位数+个位数去0(12+1)

4、十位数+十位数(10+10)

按照原数组的位置排序

代码展示:

python 复制代码
'''
0-20所有加法,从小到大排序(0+1,0+2,而不是0+1,0+10)
作者:阿夏
时间:2023年11月26日 12:00
'''


# 5以内"+"题共21题
P=[]
for a in range(0,21):     # 起始数字就是10,就是排除掉0-10之间的数字
    for b in range(0,21):      # 起始数字为0,
        if 0<=a+b<21:         
            # print('{}+{}='.format(a,b))
            P.append('{}+{}='.format('%02d'%a,'%02d'%b))
        if 0<=b+a<21:       
            # print('{}+{}='.format(a,b))
            P.append('{}+{}='.format('%02d'%b,'%02d'%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-20之间的加法题共有  {}  题'.format(len(P)) )   # 21

P2=[]
for i in P:    # 每个内容是00+00=,一共6个字符
    # print(i)
    if i[0]=='0'and i[-3]=='0':
        print(i[1:3]+i[4:])        # 全部是X+X= 个位数+个位数
        P2.append(i[1:3]+i[4:])
    if i[0]=='0'and i[-3]!='0':
        print(i[1:])      # 全部是X+XX= 个位数+十位数
        P2.append(i[1:])
    if i[0]!='0'and i[-3]=='0':
        print(i[0:3]+i[4:])   # 全部是XX+X= 十位数+个位数
        P2.append(i[0:3]+i[4:])
    if i[0]!='0'and i[-3]!='0':
        print(i[0:])   # 全部是XX+XX= 十位数+十位数 只有一个10+10
        P2.append(i[0:])
print(P2)
print('0-20之间的加法题(正序排序)共有  {}  题'.format(len(P2)) )   # 21

for e in P2:
    print(e)

存在问题:

如果是三位数的加减法,存在更多的if可能性(多次去0),写起来太麻烦了,还是想想更好的代码写法,让题目排序

相关推荐
写代码的橘子n2 分钟前
unordered_set 的常用函数
数据结构·算法·哈希算法
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧1 小时前
C语言_数据结构总结6:链式栈
c语言·开发语言·数据结构·算法·链表·visualstudio·visual studio
于慨1 小时前
数据结构(王卓版)
数据结构
田梓燊1 小时前
leetcode 95.不同的二叉搜索树 Ⅱ
数据结构·算法·leetcode
情深不寿3172 小时前
数据结构--AVL树
数据结构·c++
孑么4 小时前
力扣 编辑距离
java·数据结构·算法·leetcode·职场和发展·贪心算法·动态规划
手握风云-4 小时前
Java数据结构第二十期:解构排序算法的艺术与科学(二)
数据结构·算法·排序算法
开心比对错重要12 小时前
leetcode69.x 的平方根
数据结构·算法·leetcode
Doopny@13 小时前
数字组合(信息学奥赛一本通-1291)
数据结构·算法·动态规划
君莫愁。13 小时前
【Unity】搭建基于字典(Dictionary)和泛型列表(List)的音频系统
数据结构·unity·c#·游戏引擎·音频