2017-04-16 58 views
0

與字典值改變一個字符串的值我有在Python以下詞典:如何在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

因爲如果myDict中的字母評估爲「真」,那麼您將在第一次機會返回''。想想'myDict [letter]'會返回什麼......只是一個字,對吧?你將如何返回*多個*單詞? – blacksite

+0

嗨,是的,只是一個字,它應該返回:「como是tu?「但我不知道發生了什麼:-( – myString

+0

我在問*你*」你將如何返回多個單詞?「想想你可以使用什麼類型的數據結構,通過你的」單詞「 (這更可能是一個看起來像是一個句子),並檢查每個單詞是否可以翻譯,如果可以翻譯,將它的翻譯存儲在* what *?中,否則存儲相同的單詞...沖洗並重復所有其他單詞 – blacksite

回答

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?' 
0

該函數返回(退出)的第一次擊中return聲明。在這種情況下,這將始終是第一個詞。

您應該做的是製作一個單詞列表,並且您在哪裏看到當前的退貨,您應該添加到列表中。

一旦添加了每個單詞,就可以在最後返回列表。 PS:你的術語很混亂。你有什麼是短語,每個短語由詞組成。 「這是一個短語」是4個詞的短語:「這個」,「是」,「一個」,「短語」。一封信將是單詞的單獨部分,例如「This」中的「T」。

0

當您撥打return時,當前正在執行的方法被終止,這就是爲什麼您在查找一個單詞後停止的原因。爲使您的方法正常工作,您必須附加到作爲本地變量存儲在方法中的String

下面是一個使用列表理解,如果它存在於dictionary翻譯一個String功能:

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? 
0

myDict = { 「如何」: 「科莫」,「你?「:」tu?「,」goodbye「:」adios「,」where「:」donde「}
s =」你好嗎?「

newString ='' 

for word in s.lower().split(): 
    newWord = word 
    if word in myDict: 
    newWord = myDict[word] 
    newString = newString+' '+newWord 

print(newString)