使用 stdin.read() 从控制台读取值时出现问题

Problem when reading values from console using stdin.read()

我有这部分 python 代码可以从屏幕上读取输入值。 当它运行时,它会永远保持 运行。我根据搜索结果尝试了 CTRL+D,但它不起作用。此代码已提供,当我将代码提交给在线评分器时它可以工作,但在我的 windows 机器上不起作用。

if __name__ == "__main__":
    data = list(map(int, sys.stdin.read().split()))
    n, capacity = data[0:2]
    values = data[2:(2 * n + 2):2]
    weights = data[3:(2 * n + 2):2]

    opt_value = get_optimal_value(capacity, weights, values)

    print("{:.10f}".format(opt_value))

示例输入应为:

3 2
20 50 
12 12
51 51

在 Windows 上,您应该使用 Ctrl-Z 而不是 Ctrl-D。此外,这应该是换行符的第一个字符,并且在 Ctrl-Z 之后也应该有一个换行符(输入)。 Ctrl-Z后面可能还有其他字符,会被忽略

因此,在 Windows 上强制 EOL 的最短序列是:Enter,Ctrl-Z,Enter

我从经验中知道这一点,并且确实找到了一些说明相同的答案或评论,但我找不到任何对此进行解释的官方文档。如果我找到它,我会把它添加到这个答案中。

(如果您知道此行为的可靠来源,请发表评论。)