这个问题源于
translator()
功能。
为每个人
word
在
input_phrase
,你迭代每个
k, v
配对
words.items()
. 到目前为止还不错。
那我们想怎么办?我们要检查每一对
k,v型
直到我们找到一个匹配的单词
v
),然后(如果需要)添加密钥
k
致
translation
我们正在建设。如果找不到匹配的单词,我们只需添加原始单词
单词
价值
翻译
.
代码的问题是,即使你找到了一个单词,你也要不断地查找字典中剩余的键。另外,对于字典中的每一个键,您要么添加它的翻译,要么开始
单词
,此时您只应添加基
单词
如果你找不到匹配的。
就我个人而言,我会改变你的内心
for
循环到一个名为
translate_word()
或者类似的,但是一个简单的方法
翻译()
无重大变化的功能如下:
def translator():
translation = ""
input_phrase = str(input("Enter your phrase to translate please: ")).split()
for word in input_phrase:
found = False
for k, v in words.items():
if word in v:
translation += (k + " ")
found = True
break
if not found:
translation += (word + " ")
print(translation)
在新的
翻译()
函数,您可以看到,对于每个新单词,您都设置了一个变量
found
到
False
.
建立
将表示您是否在字典中找到了合适的翻译。
然后你将反复阅读字典。如果找到匹配项,则添加
千
翻译,设置
建立
到
True
(因为你找到了一个翻译),而且
break
从内心深处
对于
循环。
一旦走出内心
对于
loop,你看看你有没有
建立
翻译
单词
. 如果找不到翻译,只需添加
单词
致
翻译
.