我已经开始了一个简单的代码,该代码获取数字的输入,然后将这些数字按升序排序。我尝试使用sort()函数,但是它将这些数字按字母顺序排序。例如: [3,13,20]将被分类为13,20,3,因为第一个数字为1-3,第二个为2-0,第三个为3。
我尝试使用[3,13,20]在列表上简单地使用sort函数,它给出了正确的答案:3,13,20 因此,我得出结论,问题出在我的代码的第一部分。
inputstring = input("Enter Numbers:")
numbers = inputstring.split()
numbers.sort()
print(numbers)
这将导致数字被排序为3、13、20(按字母顺序)。而:
list = [13,3,20]
list.sort()
print(list)
将给出答案3,13,20(按升序排列)
任何人都可以帮助调试为什么我的代码的第一部分:
inputstring = input("Enter Numbers:")
numbers = inputstring.split()
给出了错误的升序?
谢谢!
答案 0 :(得分:1)
split
的结果始终是字符串list
,其排序方式与ints
不同。您需要转换它们;一种方法是list
理解:
numbers = [int(number) for number in inputstring.split()]
答案 1 :(得分:0)
据我所知,您正在按以下步骤向程序提供输入。
13 3 20
默认情况下,它将输入视为字符串。
因此,当您分割输入时,它将创建一个包含string
元素而不包含integer
而不是['13', '3', '20']
这样的[13, 3, 20]
元素的列表,这就是您可能会看到意外的输出。
尝试解决此问题。
lis = input().split()
lis = [int(i) for i in lis]
lis.sort()