【教学类-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),写起来太麻烦了,还是想想更好的代码写法,让题目排序

相关推荐
ZSYP-S23 分钟前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
唐叔在学习35 分钟前
【唐叔学算法】第21天:超越比较-计数排序、桶排序与基数排序的Java实践及性能剖析
数据结构·算法·排序算法
ALISHENGYA1 小时前
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(switch语句)
数据结构·算法
武昌库里写JAVA4 小时前
浅谈怎样系统的准备前端面试
数据结构·vue.js·spring boot·算法·课程设计
S-X-S4 小时前
代码随想录刷题-数组
数据结构·算法
l138494274514 小时前
每日一题(4)
java·数据结构·算法
kyrie_sakura4 小时前
c++数据结构算法复习基础--13--基数算法
数据结构·c++·算法
XWXnb64 小时前
数据结构:顺序表
数据结构·算法
橘颂TA4 小时前
【C++】数据结构 顺序表的实现(详解)
开发语言·数据结构·c++·算法
R_.L5 小时前
数据结构:双向循坏链表
数据结构·链表