如何在Python中获取多个多行输入变量?

时间:2017-05-19 06:41:06

标签: python python-2.7 python-3.x input raw-input

是否可以将多个换行输入转换为多个变量&一下子将它们声明为int

为了进一步解释我想要实现的目标,我知道这是我们如何使用地图进行空间分隔输入:

>>> a, b = map(int, input().split())
3 5
>>> a
3
>>> b
5

是否有换行符的等价物?类似的东西:

a, b = map(int, input().split("\n"))

改述:我试图一次从多行获取多个整数输入。

5 个答案:

答案 0 :(得分:5)

正如其他人所说的那样;我不认为你可以用input()来完成。

但你可以这样做:

import sys
numbers = [int(x) for x in sys.stdin.read().split()]

记住你可以按Ctrl+D完成输入,然后你有一个数字列表,你可以像这样打印它们(只是为了检查它是否有效):

for num in numbers:
    print(num)

编辑: 例如,您可以使用这样的条目(每行一个数字):

1
543
9583
0
3

结果将是:numbers = [1, 543, 9583, 0, 3]

或者你可以使用这样的条目:

1
53          3
3 4 3 
      54
2

结果将是:numbers = [1, 53, 3, 4, 3, 54, 2]

答案 1 :(得分:0)

你真的不能,inputraw_input停止阅读并在输入新行时返回;根据我所知,没有办法解决这个问题。来自inputs documentation

  

然后函数从输入中读取一行,将其转换为字符串(剥离尾部换行符),然后返回该行。

可行的解决方案可能是在循环中调用input并在之后加入'\n'

答案 2 :(得分:0)

根据我的理解,您希望在达到EOF字符之前阅读输入并从中提取数字:

[ int(x.strip()) for x in sys.stdin.read().split() ]

一旦发送ctrl+d或在条目上EOF被追究,就会停止。

例如,此条目:

1 43 43   
434
56 455  34
434 

[EOF]

将读作:[1, 43, 43, 434, 56, 455, 34, 434]

答案 3 :(得分:0)

a,b =(int(input())for _ in range(2))

答案 4 :(得分:0)

如果您想从多个输入中读取多个变量:

a, b, c = map(int, (input() for _ in range(3)))