通常当我必须在一行中处理多个整数时,我会执行以下操作:
line = input().split()
... work with the integers here ...
这从来都不是问题,但现在我必须读取一行最多 10^6 个整数,并且哪一个在 [0, 10^6] 范围内。
每次向在线法官提交解决方案时,它都会给我一个运行时错误,并在错误日志中显示:
我的问题是:是否有一种通用的方法来读取部分输入并将其中的一些保留在标准输入或以某种方式通过空格限制我的 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
断言永远不会触发。
注意:请注意,您在指定大小时可能会删掉一些整数。例如,如果您在输入 12 3456 上执行 read(4),您可能会得到 3 作为第二个数字,而实际上它是 3456.
还要注意性能问题。
