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

发布于 2021-01-29 15:00:26

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

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知道我已经完成了输入,它应该执行其余的代码?

关注者
0
被浏览
81
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    该问题的解决方案取决于您使用的操作系统。
    基本上,如果您想使用多行输入,则必须使用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()方法按空格(空格,换行符等)分割。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看