2017-03-07 78 views
0

的爲豬規則拉丁句子是:的Pig Latin功能句子

1.對於單詞,輔音開始,第一個元音之前的所有字母被移動到單詞的結尾,並通過「進一步追加AY '
2.對於以元音開始的單詞,該單詞被附加'乾草'
3.對於不包含元音的單詞,第一個字母被移動到單詞的末尾並且被附加'方式'
4.忽略所有非字符(即數字,符號)

代碼ex的主要部分執行一個無限循環,該循環接受來自用戶的字符串輸入,調用pigLatin函數並打印返回的結果。 pigLatin函數接收一個單詞列表作爲其輸入,並使用上述規則將它們轉換爲拉丁文。當用戶輸入「退出該程序」作爲轉換的輸入句子時,主要部分退出。驗證所有情況下的程序(包括無效輸入)並保存程序。

我覺得很難解決規則3.當我測試代碼時,輸​​出是不正確的... 我奮鬥了一整夜,無法入睡....請幫助 這裏是我的代碼:

enter code here

sentence=input('input:') 
VOWELS=['a','e','i','o','u'] 
CONSONANTS=['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'] 
def pigLatin(): 
    t=-1 
    for word in newsentence: 

     if word[0] in CONSONANTS: 
      if 'a'and'e'and'i'and'o'and'u' not in word[1:]: 
       print(word[1:]+word[0]+'way',end=' ') 
      for u in word: 
       t +=1 
       if u in VOWELS: 
        print (word[t:]+word[0:t]+'ay',end=' ') 
       break 
    elif word[0] in VOWELS: 
     print (word[0:]+'hay',end=' ') 
    else: 
     print (word[0:]) 

while sentence!=('Quit the program'): 
newsentence=sentence.split() 
pigLatin() 
sentence=input('input:') 
+3

這大概已經回答了一千次。它不是foo中的'a'和'b',而是foo中的'a'和foo中的'b'... –

+0

「所有非字符都被忽略」,是不是意味着只有字母被帶入帳戶? –

+2

[python豬拉丁轉換器]的可能重複(http://stackoverflow.com/questions/15400008/python-pig-latin-converter) –

回答

0

正如威廉·Onsem說,這條線沒有做什麼你認爲:

if 'a'and'e'and'i'and'o'and'u' not in word[1:]: 

你應該嘗試試用解釋器。

'a' and 'e' not in "bar" 
# returns True 

發生這種情況是因爲它是一個邏輯運算符,它查看它前後的內容。它是這樣做的:

'a' and ('e' not in "bar") 

計算結果爲

'a' and True 

其計算結果爲真,因爲非空字符串會被分配布爾真。

這裏有一些工作。它使用的所有功能,只有當所有元素都爲真返回True,和Python的功能叫做理解,它允許你做整齊循環:

vowels = "aeiou" 

all(char not in vowels for char in word)