我想在运行
后从命令行输入我的输入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 :(得分:1)
此问题的解决方案取决于您使用的操作系统
基本上,如果您想要多行输入,则必须使用sys.stdin.read()
而不是sys.stdin.readline()
。由于sys.stdin
是Python中的类文件对象,read()
方法将一直读到它到达文件末尾。它由特殊字符EOF
(文件结尾)标记。在不同的OS上,有一种不同的发送方式。
在Windows上:
输入后按 Ctrl + Z ,然后按 Enter :
2 10
20 2
30 3
^Z
在基于Unix的操作系统:
输入后按 Ctrl + D 。不需要 Enter (我相信)
如果您想从输入中获取列表[2, 10, 20, 2, 30, 3]
,那么您没问题。 split()
方法按空格分隔(空格,换行符等)。
答案 1 :(得分:0)
我同意@Leva7所说的一切。尽管如此,我建议使用另一个解决方案,即对Python 2使用raw_input
或对Python 3使用input
,如下所示:
args = []
s = raw_input() # input() for Python 3
while s != '':
args.extend([int(arg) for arg in s.strip().split()])
s = raw_input()
当然,这不是任何方式的单行,但它完成了工作并且很容易看出它是如何完成的。另外,输入结束时不需要特殊字符。
答案 2 :(得分:0)
如果您使用Windows,请确保以换行符结束输入,否则^ Z(按Ctrl-Z)将包含在输入中。 另外,请确保您使用英语语言布局-https://stackoverflow.com/a/17924627/9205085