繁体   English   中英

如何使此代码识别之前输入的内容?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM