Python比较大小

本题要求将输入的多个整数从大到小输出。

输入格式

该题目有多组测试样例,输入在一行中给出 nn 个整数 1<n≤201<n≤20 ,其间以空格分隔。

输出格式

在一行中将这些整数从大到小输出,其间以“->”相连。

输入样例

 4 2 8

输出样例

 8->4->2

我看到这题第一反应就是用Python来写。先用input.spilt()把输入的数存入一个list里面,然后用list.sort()来对列表中的元素排序,最后再用join把排序后的元素加入一个以"->"为分隔符的字符串中。 

list = input().split()
list.sort(reverse=True)
print("->".join(list))

然而我在测试时发现这段代码有bug。当输入为2 10 5 8时,预期的输出应该是10->8->5->2,但是实际输出是8->5->2->10。再比如输入99 11 7 102时,输出的是99->7->11->102。那么问题来了,到底是哪个地方错了呢?

原因很简单,input().split()是把用户输入的元素以str型来存入list中,所以在调用list.sort()时也是将列表中的元素以str型之间的比较来排序,这样就会出现10比2小、102比11小的情况。

我的解决思路是这样的:列表list中元素是str型,不能直接用list.sort()排序,那我可以先把str型元素取出来 强制转换成int型放进另一个列表a中,使用sorted(a)对列表a中int型元素进行排序后,再把列表a中int型元素强制转换为str型join入一个以“->”为分隔符的字符串进行输出。源代码如下:

扫描二维码关注公众号,回复: 3716711 查看本文章
l = input().split()
a = []
for i in l:
    a.append(int(i))
print("->".join(str(i) for i in sorted(a,reverse=True)))

哈哈哈哈哈 完美AC!

猜你喜欢

转载自blog.csdn.net/weixin_42449444/article/details/83212356