16.数字大小升降排序编写
数字大小升降排序编写输入描述:
输入为:
1. 排序方式:DESC(降序) ASCE(升序),分别表示按降序和升序排列,大小写不敏感
2. 一组十进制整数字符串,以","符号作为分隔符
例子:
DESC 789,123,456
ASCE 234,567,89
排序方式DESC ASCE请忽略大小写
输出描述:
按指定排序方式排序后得到的十进制整数字符串;
输出的数字字符串数组,以","字符作为分隔符。
示例1
输入:
ASCE 789,123,456
输出:
123,456,789 #整体是升序,每一个具体的也是升序
示例2
输入:
DESC 1258,529,2267
输出:
8521,7622,952 #整体是降序序,每一个具体的也是降序
二,下面的代码编写:
一种是if分别判断,另一种运用了集合优化简单
1 ########### 2 print('输入的格式为(输入Q或者q直接退出程序):\nASCE 123,456,789\nDESC 123,456,789') 3 while True: 4 string = input('请输入你的序列:') 5 if string == 'Q' or string == 'q': #输入的是Q或者q 直接退出程序 6 exit() 7 string_clear = string.strip() #这一步是防止用户在首尾出多输入空格,处理首尾的空格 8 sort = string_clear.split(' ')[0].replace(' ','').upper() #以空格拆分取出排序的方式然后小写改大写 9 num = string_clear.split(' ')[1].replace(' ','') #以空格拆分取出用户输入的字符串数字 10 if sort not in ['ASCE','DESC']: 11 print('请输入正确的排序''ASCE''或者''DESC') 12 continue ##这里判断取出来的排序方式是否在列表里 如果不在直接跳过继续循环输入 13 #第一种if判断方法: 14 if sort == 'ASCE': 15 num_list = num.split(',') #把数字字符串拆分字符串列表 16 index = 0 17 for var in num_list:#单个取出字符串列表里的字符串 18 num_list[index] = ''.join(sorted(num_list[index],reverse=False)) 19 #单独取出来的字符串进行sorted排序后输出为字符串列表,reverse=False是否颠倒,然后再合并在一起 20 index += 1 21 else: 22 num_list.sort() #进行字符串列表排序 23 if sort == 'DESC': 24 num_list = num.split(',') #把数字字符串拆分字符串列表 25 index = 0 26 for var in num_list:#单个取出字符串列表里的字符串 27 num_list[index] = ''.join(sorted(num_list[index],reverse=True)) 28 index += 1 29 else: 30 num_list.sort(),num_list.reverse() #进行字符串列表排序,然后颠倒 31 print('>>>排序结果为:',','.join(num_list)) #以逗号合并输出字符串 32 ''' 33 #第二种运用集合优化简短: 34 sort_dict = {'ASCE':False,'DESC':True} 35 reverse = sort_dict[sort] 36 num_list = num.split(',') #把数字字符串拆分字符串列表 37 index = 0 38 for var in num_list:#单个取出字符串列表里的字符串 39 num_list[index] = ''.join(sorted(num_list[index],reverse=reverse)) 40 index += 1 41 else: 42 num_list.sort(reverse=reverse) 43 print('>>>排序结果为:',','.join(num_list)) #以逗号合并输出字符串 44 '''
下面是代码演示结果:
作者:走路带风的帅界扛把子
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。