2013-08-26 113 views
1

我一直在努力工作在Python中的豬拉丁語翻譯器,並且我已經設置了forloop來循環每個用戶輸入字符串的字符。爲了測試forloop成功捕捉所有跟隨最初輔音的輔音,直到它遇到一個元音(例如「字符串」一詞中的「str」),我寫了一個打印語句將所有這些連續的輔音打印出來以輔音開頭的單詞。不幸的是,forloop只能省略字母「a」,但允許打印元音「e」「i」「o」和「u」。forloop在python豬拉丁語翻譯器

所以我在這裏的問題是如何解決這個代碼,以便只有第一串輔音,直到輸入的單詞的第一個元音?

我沒有特別配備語言來描述我正在做這個過程,但希望這個請求是一個足夠接近的近似值,有助於表達問題的本質。謝謝。

代碼:

def translate(): 
    print("Welcome to the Pig Latin Translator") 
    original=raw_input("What word would you like to translate?") 
    length=len(original) 
    move_letters="" 
    index=0 
    for i in range(length): 
     if original[i]!=("a" or "e" or "i" or "o" or "u"): 
      print(original[i]) 
      move_letters=move_letters+original[i] 
      index+=1 


translate() 
+2

http://www.mit.edu/~johnp/6.189/solutions/piglatin.py –

+0

這個問題的答案應該可以幫助你:http://stackoverflow.com/questions/11809126/cannot-determine-元音從 - 輔音/ – flornquake

回答

1

表達

("a" or "e" or "i" or "o" or "u") 

相當於"a"。這就是爲什麼你的代碼只能捕捉到"a"。你需要寫:

if not original[i] in ("a","e","i","o","u") : 

if original[i] != "a" and original[i] != "e" and original[i] != "i" and original[i] != "o" and original[i] != "u" : 

之所以("a" or "e" or "i" or "o" or "u")相當於"a"的是,根據其定義,or運算符返回第一個操作數等於真或0如果有沒有。在這種情況下,'''''相當於真,所以它是整個表達式的結果。

您還需要添加:

else: 
    break 

if