我们如何在一行中使用原始空格输入原始输入,然后将它们转换为整数并将它们添加到列表中?

bla*_*ash 2 python string python-2.7

我的代码:

number = raw_input().split()
# I can't get a line here to do the trick
a = list()
a.append(number)
Run Code Online (Sandbox Code Playgroud)

我需要做的就是在一行中用空格分隔2个整数.然后在Python列表中将它们作为整数输入,然后将元素添加回结果变量中.

Mik*_*ler 5

这会拆分您在空白处输入的所有内容,并尝试将每个条目转换为整数:

 numbers = [int(x) for x in raw_input().split()]
Run Code Online (Sandbox Code Playgroud)

这是列表理解.它与此代码相同:

numbers = []
for x in raw_input().split():
    numbers.append(int(x))
Run Code Online (Sandbox Code Playgroud)

列表理解更短.如果您需要处理潜在的异常并且代码变得更复杂,那么循环可能更合适.

进一步改进 - 错误处理

用户总是有可能输入错误数据.

def get_numbers(count=2):
    """Get `count` integers from one line of user input.
    """
    numbers = []
    msg = 'Please enter {} integers separated by space: '.format(count)
    for entry in raw_input(msg).split():
        try:
            numbers.append(int(entry))
        except ValueError:
            print('Found bad value: {}.'.format(entry))
            return get_numbers()
    if len(numbers) != count:
        print('Need to enter exactly {} numbers. '
              'Found: {}.'.format(count, len(numbers)))
        return get_numbers()
    return numbers

my_two_numbers = get_numbers()
Run Code Online (Sandbox Code Playgroud)

  • @blankyash`number`已经是结果了.无需附加到"a".如果你坚持使用名字`a`,你可以在raw_input().split()]中写'a = [int(x)for x). (2认同)
  • 我会添加一个子句`if x.isidigt()`来处理错误的输入. (2认同)