我在试着解决Kattis的问题。完整的问题在以下链接中找到:https://open.kattis.com/problems/addingwords
这个问题让我感到困惑的部分是:“输入是由多达2000个命令组成的序列,每行一个命令,在文件末尾结束。”
此输入的代码是什么?我试过这样做:
import sys
for line in sys.stdin.readlines():
#print('something')
在此之后,我像往常一样在上面的缩进中继续执行程序。我的问题是,我如何测试程序是否在cmd中工作?我想测试几个案例,但是当我输入一些东西时,命令提示符会一直等待其他结果,而不是输出任何内容。当我按下C键时,程序突然结束。我们应该如何检查程序是否工作,同时接受用户输入,直到文件结束?
发布于 2018-07-19 07:14:35
这里的问题是readlines()
是渴望的,而不是懒惰的。这意味着它会将整个文件读取到内存中(直到EOF),然后将其拆分成行,并返回这些行的列表。因此,当使用交互式标准输入时,sys.stdin.readline()
将一直等到标准输入结束(在linux/macOS上按Ctrl-D,在windows上按Ctrl+Z )。
但是不需要readlines()
(实际上,也不需要you almost should never use it)。默认情况下,对文件对象的迭代是按行进行的:
for line in sys.stdin:
print('got line!')
文档甚至是admit that you should do this。如果您确实需要列表中的所有行,那么只需执行list(sys.stdin)
。
https://stackoverflow.com/questions/51412086
复制相似问题