遍历去匹配
import sys # 存放命令 cmd = { 'reset': 'reset what', 'reset board': 'board fault', 'board add': 'where to add', 'board delete': 'no board at all', 'reboot backplane': 'impossible', 'backplane abort': 'install first' } # 循环输入 unknow = 'unknown command' for s in sys.stdin: s = s.strip().split() # 格式化输入,以空格为界限存入tuple match_cmd = list() # 命中命令保存结果 if len(s) == 0: break # 遍历配置文件命令,去匹配输入命令 for c in cmd: index_word = 0 # 匹配命令的单词下标 cmd_word = c.split() # 格式化配置文件中的命令 # 如果输入的命令单词数大于配置文件命令单词数,则跳过该条配置文件命令,继续匹配 if len(s) != len(cmd_word): continue # 遍历输入的命令 for seg_s in s: # 从第一个字符开始匹配,如果输入的单词是命令单词的子串,则认为匹配成功,匹配单词下标+1。否则跳过该命令。 if cmd_word[index_word].find(seg_s) == 0: index_word += 1 else: break # 判断命令的所有单词是否都匹配成功 if index_word == len(cmd_word): match_cmd.append(c) # 判断全匹配个数 if len(match_cmd) == 1: print(c***tch_cmd[0]]) else: print(unknow)