我如何循环搜索功能 - python

how can I loop through search function - python

我正在尝试制作搜索程序,但我卡在了某个循环部分。 功能工作有几个步骤。 首先,我将从用户那里得到一个词(输入)。 然后,我将比较用户的输入是否包含在任何字典的任何值中 如果包含用户的输入,那么我想从字典中打印出键值作为列表类型。如果没有,那么我想执行循环并打印出一些消息。

例如,如果我输入 nice 作为输入,那么程序应该将 matthew 打印为列表类型。 程序应该保持循环,直到我键入不包含在字典值中的输入。 例如,如果我键入来自 dic_1 和 dic_2 的任何输入,程序应保持循环直到我输入不涉及字典值的输入。

如果我键入垃圾或字典中没有的内容,那么程序应该打印出不匹配的消息。

dic_1 = {'matthew':'he is a nice guy', 'dennis':'he is a bad guy', 'alex':'he is a good guy'}
dic_2 = {'manchester': 'city from england', 'tokyo':'city from japan', 'rome':'city from italy'}

def searchWords(*dicts):
  while(True):
     list_1 = []
     t = input('Enter a word for search:')
     for dic in dicts:
        for k,v in dic.items():
           if t in v:
              list_1+=[k]
          else:
              print("Nothing match, end program")
              break
    return list_1

print(searchWords(dic_1, dic_2)

现在,当我输入一次时打印出键值没有问题,但我卡在了循环部分。 我想在整个程序中保持循环,直到我输入字典值中没有涉及的单词,但我想不出任何解决循环问题的算法。我尝试了 for 循环和 if 循环,但我失败了。因此,如果你们可以为循环提供任何建议或想法,将不胜感激。

处理此问题的最简单方法是使用 True/False 标志,如下所示:

dic_1 = {'matthew': 'he is a nice guy',
         'dennis': 'he is a bad guy',
         'alex': 'he is a good guy'}
dic_2 = {'manchester': 'city from england',
         'tokyo': 'city from japan',
         'rome': 'city from italy'}


def searchWords(*dicts):
    while True:
        t = input('Enter a word for search: ')
        found = []
        for dic in dicts:
            for k, v in dic.items():
                if t in v.split():
                    found.append(k)
        if not found:
            print('No match')
            break
        else:
            print(*found)