如何使输入接受空格?

时间:2015-03-30 19:23:29

标签: python arrays append range

我需要一个程序 in Python ,它会要求用户在一行中输入多个数字,每个数字用空格分隔。与Enter your numbers: 2 1 5 8 9 5一样,我需要打印[2, 1, 5, 8, 9, 5]

但到目前为止我制作的节目不接受空格,我该如何改变呢?还有一种方法可以使数字从最小到最大顺序排列吗?

这是我到目前为止所拥有的:

elx = []

el = input("Enter your numbers: ")
for i in el:
    if el.isdigit():
        elx.append(el)
        break
    if not el.isdigit():
        print ("Number is invalid")
        continue

print (elx)

3 个答案:

答案 0 :(得分:2)

只需用空格分割,使用列表推导来检查字符串是否由数字组成:

nums = sorted([int(i) for i in input().split() if i.isdigit()])

答案 1 :(得分:2)

使用try / except和sorted:

while True:
    el = input("Enter your numbers: ")
    try:
        elx = sorted(map(int, el.split()))
        break
    except ValueError:
        print("Invalid input")

如果用户可以输入负数,则isdigit将失败。

此外,如果用户输入1 2 3 f 5,我认为应该将其视为一个不被忽视的错误。

答案 2 :(得分:1)

s = input('Gimme numbers! ') # '1 2 3'
s = list(map(int, s.split()))
print(s) # [1, 2, 3]

这将生成一个包含数字(s.split(' '))的字符串列表,这些数字又由地图转换为整数。

最后,要对列表进行排序,请使用sort(s)

编辑:如official doc中所述,如果某些数字被两个空格分隔,则使用split(sep=' ')会抛出异常,因为在这种情况下,分割会生成一个空字符串({{ 1}}),而'1 2'.split(' ') == ['1', '', '2']将无法转换它。

感谢Padraic Cunningham指出这一点!