题目描述可多同学手里有 n 张卡片每张卡片上写了一个自然数他想把这些卡片里的奇数放前面偶数放后面并且奇数部分从小到大偶数部分从大到小排序请你写个程序帮帮他吧输入描述输入有两行第一行是一个整数 n 0 n 100000为卡片总数;第二行有 n 个整数分别为每张卡片上的数字输出描述输出符合题目要求的数据的排列方式每个数据之间使用一个空格分开样例1输入520 4 2 3 1输出1 3 20 4 2
思路:
- 首先将输入的数字分为奇数部分和偶数部分,分别存放在两个列表中;
- 对奇数部分进行从小到大的排序;
- 对偶数部分进行从大到小的排序;
- 将奇数部分和偶数部分连接起来,并以空格分隔输出。
实现代码如下:
n = int(input()) nums = list(map(int, input().split()))
将奇数和偶数分别存放在两个列表中
odd_nums = [num for num in nums if num % 2 == 1] even_nums = [num for num in nums if num % 2 == 0]
对奇数部分进行从小到大的排序
odd_nums.sort()
对偶数部分进行从大到小的排序
even_nums.sort(reverse=True)
将奇数部分和偶数部分连接起来,并以空格分隔输出
result = odd_nums + even_nums print(" ".join(map(str, result)))

原文地址: http://www.cveoy.top/t/topic/h0o9 著作权归作者所有。请勿转载和采集!