![](/img/trans.png)
[英]How do I run a function from an input before the code for the function has been read?
[英]How to make this code identify what has been input before?
对于家庭作业,我们必须编写代码来执行以下操作:
编写程序以读取多行输入,直到输入空行。 输入的每一行将包含多个单词。 如果您以前见过该词,则应将其打印出来。 用户完成输入后,您的程序应打印出看到的重复单词数。
到目前为止,我已经做到了:
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).')
我的代码不会循环回到开头,而只是停止。 没有错误; 事情就停止了。 我该怎么做才能使其再次运行?如何使它运行?
首先,您有一个无限循环。 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
了这样(没有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: ")
最后一个条件-仅当您之前已经看到过该单词时才应回声-我留给读者练习。
问题不在于它停止,这是相反的:它使一个无限循环下去,不要求输入,因为它只要求提供更多的输入时,如果发现一个词就是已经在linelist
。 将输入请求缩进两个级别,以便在处理整行后请求输入。 您还可以添加到计数和打印字,如果它是在列表中,或将其添加到列表中,如果它是不是已经在列表中。 您还必须将单词添加到wordList
,而不是lineList
。 实际上,您也不需要lineList
。
wordList = []
count = 0
line = input("Words: ")
while line:
for x in line.split():
if x in wordList:
count += 1
print(x)
else:
wordList.append(x)
line = input("Words: ")
print('You repeated', str(count), 'word(s).')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.