一尘不染

在python中使用sys.stdin.readline()从cmd读取多行

python

我想在运行后从命令行输入我的输入

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

输入示例可以是:

2 40
20 2
30 3

我的问题是:
1)如何使用我的输入创建列表数据?
2)如何让Python知道我已经完成了输入,它应该执行其余的代码?


阅读 766

收藏
2021-01-20

共1个答案

一尘不染

该问题的解决方案取决于您使用的操作系统。
基本上,如果您想使用多行输入,则必须使用sys.stdin.read()代替sys.stdin.readline()。由于sys.stdin在Python中是类似文件的对象,因此该read()方法将一直读取到到达文件末尾为止。它以特殊字符EOF(文件结尾)标记。在不同的操作系统上,有不同的发送方式。

在Windows上 :输入后
Ctrl+ Z,然后按Enter

2 10
20 2
30 3
^Z

在基于Unix的操作系统上 :输入后
Ctrl+ D。不需要Enter(我相信)

如果您想[2, 10, 20, 2, 30, 3]从输入中获取列表,就可以了。该split()方法按空格(空格,换行符等)分割。

2021-01-20