通常,当我必须在一行上处理多个整数时,请执行以下操作:

line = input().split()
... work with the integers here ...


这从来都不是问题,但是现在我必须读取一行,最多包含10 ^ 6个整数,并且其中一个在[0,10 ^ 6]范围内。

每次提交解决方案给在线法官时,都会给我一个运行时错误,并在错误日志上显示:

python - 限制input()函数上的字符数-LMLPHP

我的问题是:是否有一种通用的方法来读取部分输入并将其中一些保留在stdin或以某种方式将我的input()限制为空格?

在Python3文档上或在StackOverflow上搜索时,我什么都没找到!

PS:您可以在这里找到问题https://www.urionlinejudge.com.br/judge/en/problems/view/1973

最佳答案

使用sys.stdin.read控制您一次读取的字符数:

import sys
a = sys.stdin.read(32)
assert len(a) <= 32


断言永远不会触发。

注意:请注意,指定大小时可能会切掉一些整数。例如,如果您在输入read(4)上输入12 3456,则当它实际上是3时,您可能会得到3456作为第二个数字。

也要注意性能问题。

关于python - 限制input()函数上的字符数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50264768/

10-11 18:07