我在Python中有以下字典:
myDict = {"how":"como", "you?":"tu?", "goodbye":"adios", "where":"donde"}
并使用类似:"How are you?"
的字符串,与myDict
相比,我希望得到以下结果:
"como are tu?"
你可以看到如果一个单词没有出现在myDict
中,那么"是"结果显示为。
这是我的代码,直到现在:
myDict = {"how":"como", "you?":"tu?", "goodbye":"adios", "where":"donde"}
def translate(word):
word = word.lower()
word = word.split()
for letter in word:
if letter in myDict:
return myDict[letter]
print(translate("How are you?"))
结果只得到第一个字母:como
,那么我没有得到整个句子我做错了什么?
感谢您的高级帮助!
答案 0 :(得分:0)
问题是你要返回字典中映射的第一个单词,所以你可以使用它(我已经改变了一些变量名,因为它有点令人困惑):
myDict = {"how":"como", "you?":"tu?", "goodbye":"adios", "where":"donde"}
def translate(string):
string = string.lower()
words = string.split()
translation = ''
for word in words:
if word in myDict:
translation += myDict[word]
else:
translation += word
translation += ' ' # add a space between words
return translation[:-1] #remove last space
print(translate("How are you?"))
<强>输出:强>
'como are tu?'
答案 1 :(得分:0)
该函数在第一次命中<div style="maring-top:0px !important;">
语句时返回(退出)。在这种情况下,这将始终是第一个单词。
你应该做的是制作一个单词列表,当你看到当前的返回时,你应该添加到列表中。
添加完每个单词后,您可以在结尾处返回列表。
PS:你的术语令人困惑。你所拥有的是短语,每个短语都由单词构成。 &#34;这是一个短语&#34;是一个由4个单词组成的短语:&#34;这个&#34;,&#34;是&#34;,&#34; a&#34;,&#34;短语&#34;。一封信将是该单词的个别部分,例如&#34; T&#34;在&#34;这&#34;。答案 2 :(得分:0)
当您调用return
时,当前正在执行的方法将被终止,这就是您在找到一个单词后停止的原因。为了使您的方法正常工作,您必须附加到作为方法中的局部变量存储的String
。
这是一个使用列表理解来翻译String
的函数,如果dictionary
中存在def translate(myDict, string):
return ' '.join([myDict[x.lower()] if x.lower() in myDict.keys() else x for x in string.split()])
:
myDict = {"how": "como", "you?": "tu?", "goodbye": "adios", "where": "donde"}
print(translate(myDict, 'How are you?'))
>> como are tu?
示例:
select * from employee WHERE fname like "%أسامة%" and mname="علي" and lname="الجاسم"
答案 3 :(得分:0)
myDict = {&#34;&#34;:&#34; como&#34;,&#34;你?&#34;:&#34; tu?&#34;,&#34;再见&#34;:&#34; adios&#34;,&#34;其中&#34;:&#34; donde&#34;}
s =&#34;你好吗?&#34;
newString =''
for word in s.lower().split():
newWord = word
if word in myDict:
newWord = myDict[word]
newString = newString+' '+newWord
print(newString)