描述 输入整型数组和排序标识 对其元素按照升序或降序进行排序 输入描述 第一行输入数组元素个数 第二行输入待排序的数组 每个数用空格隔开 第三行输入一个整数0或1。0代表升序排序 1代表降序排序 输出描述 输出排好序的数字 1 2 4 9 3 55 64 25 1 2 3 4 9 25 55 64 1 2 3 4 5 5 4 3 2 1我的代码 AC
while True: try: num_1 int(input()) num_2 input().split() num_3 int(input()) num_2 list(map(int,num_2)) if num_3 0: num_2 sorted(num_2) else: num_2 sorted(num_2,reverse True) num_2 list(map(str,num_2)) print( .join(num_2)) except: break知识点 input
input()在python3把一切输入作字符串处理**并返回一个字符串str** 此时的num_2为“1 2 4 9 3 55 64 25” 字符串。 而sorted 的作用是对所有可迭代对象 元组 字符串 列表等 进行排序并返回一个列表list。 如果此时用 sorted(num_2)的话 会返回一个包含空格的list [ , , , , , , , 1 , 2 , 2 , 3 , 4 , 4 , 5 , 5 , 5 , 6 , 9 ] 是把字符串的每一位都当初一个单位进行排序。 为此 用到处理字符串的神技--- str.split()--- num_2 input().split() 以空格为分隔符将该字符串分成了一个可迭代的列表list[ 1 , 2 , 4 , 9 , 3 , 55 , 64 , 25 ] (注意 列表内的每个元素皆为字符串 。 如果此时直接进行sorted() 又会造成上次遇到的“高位数截取的问题” : [ 1 , 2 , 25 , 3 , 4 , 55 , 64 , 9 ] 25当成2 55当成5 64当成6 来进行排序map
如何将[ 1 , 2 ] 变成[1,2]呢 请全体起立 请出无敌处理机器 [map()](https://www.runoob.com/python/python-func-map.html) num_2 list(map(int,num_2)) 注意py3中map 返回的迭代后的列表的地址 需要list mapjoin()
注意 seq1 [1, 2, 1]
print(’ .join(seq1)) 会报错 TypeError: sequence item 0: expected str instance, int found
说明join的拼接对象为list turple dic str中的 字符串str元素。
所以这时候再次num_2 list(map(str,num_2)) ,把num_2里的int元素变成str元素 再使用join将列表list转换成字符串最后达到输出条件。



