如何修改Python实现的简易翻译器代码以获得正确预期输出?
问题原因
- 循环逻辑顺序错误:当前代码先遍历翻译映射字典的key,再遍历待翻译的单词序列,每匹配一条翻译规则就会触发一次单词拼接,导致最终输出重复拼接了多轮结果
- else分支位置错误:你把else加在了内层if判断后,每一次某单词和当前映射不匹配时就会直接拼接原词,完全不符合翻译逻辑
修正方案
把循环顺序反过来,优先遍历每个待翻译的单词,为了提升查找效率可以提前把翻译字典的映射关系反转,把多语言单词作为key,目标翻译词作为value,对每个单词先查找是否存在对应的目标翻译,存在就用翻译结果,不存在就保留原词:
mylist = [] mydict = {} mystr = "" num = int(input()) for i in range(num): mylist.append(input()) for item in mylist: temp = item.split() # 反转映射关系,方便直接查找多语言词对应的目标翻译 for lang_word in temp[1:4]: mydict[lang_word] = temp[0] word = input() word_s = word.split() for w in word_s: # 有翻译就用翻译结果,没有就保留原词 mystr += f"{mydict.get(w, w)} " # 去掉末尾多余空格后输出 print(mystr.strip())
验证结果
输入你给出的测试用例后,输出为:
man am kheili alaghemand in barnamenevisi
和预期结果完全一致。
内容的提问来源于stack exchange,提问作者smartnima
相关产品推荐
相关产品推荐

