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

How to take multiple multiline input variables in Python?

是否可以将多个换行符输入到多个变量中并同时将它们声明为 int

为了进一步解释我想要完成的事情,我知道这就是我们如何使用地图 space 分隔输入:

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

有换行符吗?类似于:

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

换句话说:我正在尝试一次从多行中获取多个整数输入。

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

The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that.

一个可行的解决方案可能是在循环中调用 input,然后在 '\n' 上加入。

据我从你的问题中了解到,你想读取输入直到到达 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]

正如其他人所说;我不认为你可以用 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]

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

如果您的意思是从多个输入读取多个变量:

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