0

目前,我正在开发一个 Python 程序,该程序返回在多行输入中出现次数最多的单词,最后一行是字符串“###”。

poetry  = []
max = 0
maxitem = None
while True:
 poetry.append(input().lower().split())
for x in poetry:
    count =  poetry.count(x)
if count > max:
    max = count
    maxitem = x
    print(maxitem)

现在,我遇到的主要问题是我在 while 循环体中遇到的 EOF 错误。据我所知,这背后的原因是它不断要求新的输入行,但它没有得到。我不知道如何纠正这一点。对程序其余部分的任何帮助也将不胜感激。

4

2 回答 2

4

不要input()用于读取数据,sys.stdin而是使用:

for line is sys.stdin:
    poetry.append(line.lower().split())

这将从stdin文件句柄中读取行直到关闭,而不会引发 EOF 异常。stdin如果开始关闭,则循环体根本不会执行。

于 2013-04-30T16:47:53.820 回答
2

按照 Martijn Pieters 的建议使用sys.stdin是这里的方法,但为了完整起见,你可以继续使用input(). 您只需要捕获EOFError异常并退出循环:

while True:
    try:
        poetry.append(input().lower().split())
    except EOFError:
        break
于 2013-04-30T16:52:03.973 回答