在Python中使用sys.stdin.readline()从cmd读取多行
我想在运行后从命令行键入输入在Python中使用sys.stdin.readline()从cmd读取多行,python,stdin,Python,Stdin,我想在运行后从命令行键入输入 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) 如
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知道我已经完成了输入,它应该执行其余的代码?此问题的解决方案取决于您使用的操作系统。
基本上,如果需要多行输入,则必须使用
sys.stdin.read()
而不是sys.stdin.readline()
。由于Python中的sys.stdin
是一个类似文件的对象,因此read()
方法将一直读取到文件的末尾。它由一个特殊字符EOF
(文件末尾)标记。在不同的操作系统上,有不同的发送方式
在Windows上:输入后按Ctrl+Z,然后按Enter键: 在基于Unix的操作系统上:
输入后按Ctrl+D。不需要输入(我相信)
如果您想从您的输入中获取列表
[2,10,20,2,30,3]
,您就可以了。split()。尽管如此,我还是建议另一种解决方案,即对Python2使用raw_input
,或对Python3使用input
,如下所示:
args = []
s = raw_input() # input() for Python 3
while s != '':
args.extend([int(arg) for arg in s.strip().split()])
s = raw_input()
当然,这在任何方面都不是一条直线,但它完成了任务,并且很容易看到它是如何完成的。另外,输入的结尾不需要特殊字符。如果您在Windows上,请确保使用换行符完成输入,否则^Z(按Ctrl-Z键)将包含在输入中。
还要确保使用英语布局-谢谢@Leva7,ctrl+D可以工作。我得到了我想要的结果!
args = []
s = raw_input() # input() for Python 3
while s != '':
args.extend([int(arg) for arg in s.strip().split()])
s = raw_input()