当我的代码对输入进行排序时,为什么它在某些情况下不起作用?

zch*_*zch 3 python sorting input

我是Python的新手.首先,代码应该采用输入(以"x/y/z"的形式,其中x,y和z是任何正整数)并将其分成三个不同的变量.

input = raw_input()
a, b, c = input.split("/", 2)
Run Code Online (Sandbox Code Playgroud)

我希望我的代码的第二部分采用这三个变量并根据它们的数值对它们进行排序.

order = [a, b, c]
print order
order.sort()
print order
Run Code Online (Sandbox Code Playgroud)

虽然这适用于大多数输入,但我发现对于输入"23/9/2"和"43/8/2",输出尚未排序,因此不会以正确的顺序返回.关于什么可能导致这些输入不起作用的任何想法?

And*_*ark 10

问题是你正在排序字符串,并期望它们像整数一样排序.如果您想要数字排序,首先将您的字符串列表转换为整数列表.

>>> sorted(['23', '9', '2'])
['2', '23', '9']
>>> sorted(map(int, ['23', '9', '2']))
[2, 9, 23]
Run Code Online (Sandbox Code Playgroud)

以下是您可以重写代码的方法:

input = raw_input()
a, b, c = map(int, input.split("/", 2))
order = [a, b, c]
print order
order.sort()
print order
Run Code Online (Sandbox Code Playgroud)

如果您需要将它们转换回字符串,只需使用map(str, order).请注意,在Python 2.x上map()返回一个列表,在3.x上它将返回一个生成器.