对于家庭作业,我们必须编写将执行以下操作的代码:
编写程序以读取多行输入,直到空白行 进入。每行输入将包含多个单词。如果你 以前见过这个词,你应该打印出来。用户之后 完成输入后,你的程序应打印出多少 它看到的重复的话语。
到目前为止,我已经这样做了:
lineList = []
wordList = []
count = 0
line = input("Words: ")
while line:
for x in line.split():
if x in lineList:
count += 1
wordList.append(x)
print(x)
lineList.append(line)
line = input("Words: ")
print('You repeated '+ str(count) +' word(s).')
我的代码不会循环回到开头,它就会停止。没有错误;事情就是停止运转。我该怎么做才能让它再次运行,我该如何让它运作?
答案 0 :(得分:3)
首先,你有一个无限循环。永远不会使用任何值更新line
,因为它隐藏的条件永远不会成立。 lineList
在程序开头不会包含x
,因此它会被卡在那里。
显而易见的解决方法是将input
行重新移动几个空格......
while line:
for x in line.split():
if x in lineList:
count += 1
wordList.append(x)
print(x)
lineList.append(line)
line = input("Words: ")
......但那也不是那么做。
您的下一个问题是您的情况不正确。您不应该关心lineList
中是否出现一个单词 - 事实上,这是一个多余的变量,只会让您以后感到困惑。您想要查看wordList
。
所以,这会使代码成为这个(没有lineList
):
line = input("Words: ")
while line:
for x in line.split():
if x in wordList:
count += 1
wordList.append(x)
print(x)
line = input("Words: ")
最后一个条件 - 只有你以前见过这个词才应该回应 - 我作为练习留给读者。
答案 1 :(得分:0)
问题不在于它停止,而是相反:它继续在无限循环中进行,而不需要输入,因为它只在需要更多输入时才会找到一个已经在{{1 }}。通过两个级别取消输入请求,以便在处理整行后请求输入。如果列表中 ,则还必须添加计数并打印单词,如果列表中不,则将其添加到列表中。您还必须将该字词添加到linelist
,而不是wordList
。事实上,你也不需要lineList
。
lineList