怎样快速记忆英语数字,少儿Python每日一题(3):数字排序

极简大道 极简大道 2023-05-19 记忆方法 阅读: 143
摘要: 原题解答本次的题目如下所示(原题出处:蓝桥杯):【编程实现】连续输入5个正整数(正整数之间以英文逗号隔开),然后将五个正整数按照从大到小的顺序输出(输出排序后的正整数之间以英文逗号隔开,相同大小的正整数并列输出)。

原题解答

本次的题目如下所示(原题出处:蓝桥杯):

【编程实现】
连续输入5个正整数(正整数之间以英文逗号隔开),然后将五个正整数按照
从大到小的顺序输出(输出排序后的正整数之间以英文逗号隔开,相同大小的
正整数并列输出)。
输入描述:输入5个正整数以英文逗号隔开
输出描述:将5个正整数按照从大到小的顺序输出,正整数之间英文逗号隔

【样例输入】
3,2,5,5,4
【样例输出】
5,5,4,3,2

本题是一个典型的列表排序题。这道题除了排序的问题外,还涉及到两个问题:第一是同一行输入多个数以逗号隔开;第二是同一行输出多个数以逗号隔开。

我们先来解决第一个问题,首先我们可以通过字符串的split()方法将字符串按照分隔符分隔成列表。但是分隔后的列表每个元素类型是字符串。我们可以使用内置的map()函数可以实现对每个元素的类型转换,因此第一行可以写成这样:

a = list(map(int, input().split(',')))

这里面有一个难点,map()函数属于Python内置函数中的高阶函数,相对比较难掌握。如果不会使用map()函数,可以使用稍微繁琐一点的方法,通过循环更改每个元素的数据类型:

a = input().split()for i in range(len(a)):
    a[i] = int(a[i])

下面我们再来解决第二个问题,列表如何输出成以元素之间以逗号隔开的形式。 在函数里面,大家学习过位置参数的概念,在print中如果将列表的变量名称前加*,将会把列表的每个元素作为print()函数里面的参数,print每个参数打印时默认分隔符为空格,我们将它修改成逗号即可,语句格式:

print(*a, sep=',')

如果没有掌握这个操作也没关系,我们还可以排序以后使用join()方法拼凑成字符串打印,但是要注意的是,使用join()方法时,列表所有元素的数据类型必须是字符串:

for i in range(len(a)):
    a[i] = str(a[i])
s = ','.join(a)print(s)

解决了这两个问题,我们最后再来看排序。

方法一(列表的sort()方法):

a = list(map(int, input().split(',')))
a.sort(reverse=True)print(*a, sep=',')

方法二(内置函数sorted()):

a = list(map(int, input().split(',')))
a = sorted(a, reverse=True)print(*a, sep=',')

其他方法:

如果不觉得麻烦,除了使用Python自带的方法和函数外,也可以自己写排序的语句,具体参照Python的排序算法和查找算法这篇文章。不过考试和比赛时关键是要能实现相关的功能即可,没必要给自己增加代码量和难度。

本题拓展

该题目主要考查排序的使用以及一行多数据的输入和输出,题目难度:★★

在少儿编程竞赛中,一行输入和输出多数据是经常会出现的问题。如果无法理解map()函数和变量名前面加*这两种写法,也可以将这两行代码熟记于心。对于提高自己的编程效率很有帮助。

针对此类题型,这里编一道难度略高于原题的题目:

【编程实现】
连续输入10个正整数(正整数之间以英文逗号隔开),然后将奇数和偶数分类。奇数按照从大到小的顺序排序并输出,以逗号隔开;偶数按照从小到大的迅速排列并输出,以逗号隔开。
输入描述:输入10个正整数以英文逗号隔开
输出描述:分两行输出,第一行为排好序的奇数,数字之间英文逗号隔开;第二行为排好序的偶数,数字之间英文逗号隔开
【样例输入】
8,2,5,7,6,1,9,4,10,3
【样例输出】
9,7,5,3,1

2,4,6,8,10

本题与原题相差不大,多了一个分类整理的问题,我们需要新建两个空列表,并对列表中的值进行判断,奇数放入一个列表中,偶数放入另一个列表中,并分别对两个列表进行排序。

a = list(map(int, input().split(',')))
odd = []
even = []for i in a:    if i % 2 == 1:
        odd.append(i)    else:
        even.append(i)
odd.sort(reverse=True)
even.sort()print(*odd, sep=',')print(*even, sep=',')

其他相关
英语数字游戏,英语的星期一到星期六,为什么和123456没关系?

英语数字游戏,英语的星期一到星期六,为什么和123456没关系?

作者: 极简大道 时间:2023-05-19 阅读: 182
追根溯源,这和“星期”这个概念的诞生有关,一开始,人们是根据天体的运行而制定出这种计时方式的,一周的7天其实分别对应着7颗星:...
英语数字1-10,英语数词综合

英语数字1-10,英语数词综合

作者: 极简大道 时间:2023-05-19 阅读: 174
一、英语数词定义数词主要分为基数词和序数词两大类,表示数量或顺序,可以作主语、宾语、表语、定语、状语和同位语使用。举例:There are ...
英语数字1到10口诀,2023年中考英语高频单词+词组(M~N)

英语数字1到10口诀,2023年中考英语高频单词+词组(M~N)

作者: 极简大道 时间:2023-05-19 阅读: 257
...

高效英语单词编码记忆法,「单词积累」numerous 牛津选必修1U4

作者: 极简大道 时间:2023-05-19 阅读: 180
...
企业所得税扣除比例口诀,个税专项扣除顺口溜~

企业所得税扣除比例口诀,个税专项扣除顺口溜~

作者: 极简大道 时间:2021-12-28 阅读: 799
点击关注“税小课”,获取最实用的财税知识!顺口溜《个税专项扣除 政策篇》...

年度爆文