2013-07-28 40 views
1

我想擴大Codecademy豬拉丁轉換器,以便它接受句子而不是單個單詞並轉換句子中的每個單詞。這裏是我有的代碼:Python - Pyg Latin?

pyg = 'ay' 

pyg_input = raw_input("Please enter a sentence: ") 
print 

if len(pyg_input) > 0 and pyg_input.isalpha(): 
    lwr_input = pyg_input.lower() 
    lst = lwr_input.split() 
    for item in lst: 
     frst = lst[item][0] 
     if frst == 'a' or frst == 'e' or frst == 'i' or frst == 'o' or frst == 'u': 
      lst[item] = lst[item] + pyg 
     else: 
      lst[item] = lst[item][1:len(lst[item]) + frst + pyg 
    print ' '.join(lst) 

我不確定什麼是錯的,所以我很感激任何幫助。 感謝

+0

你不說你的問題是什麼! –

+1

在解釋器中嘗試''foo'.isalpha()'然後''foo bar'.isalpha()'。結果可能是有啓發性的。 – torek

+0

我不確定有什麼不對,這就是爲什麼。 – Perceptic

回答

3
  • 句子可以包含非字母(例如空間):這樣pyg_input.isalpha()將產生錯誤:
  • 您使用lst[item]訪問每個字符。請使用item
  • 迭代列表時,無法更新列表。在下面的代碼中,我使用了另一個名爲latin的列表。
  • 你的代碼有以下行(沒有結束託槽)一個語法錯誤:

    lst[item][1:len(lst[item]) 
    
  • 下面的代碼是不完美的。例如,你需要過濾掉非字母如,.,...


pyg = 'ay' 

pyg_input = raw_input("Please enter a sentence: ") 
print 

if len(pyg_input) > 0:# and pyg_input.isalpha(): 
    lwr_input = pyg_input.lower() 
    lst = lwr_input.split() 
    latin = [] 
    for item in lst: 
     frst = item[0] 
     if frst in 'aeiou': 
      item = item + pyg 
     else: 
      item = item[1:] + frst + pyg 
     latin.append(item) 
    print ' '.join(latin) 
+0

當我嘗試這個 – Perceptic

+0

時,我收到'latin.append(item)'的語法錯誤,它很好,似乎是codecademy實驗室。我從文本編輯器中運行它,並沒有問題。謝謝! – Perceptic

+0

@falsetrue我知道這不是完美的,但我是python的新手,所以我只是在試驗,看看我能不能做到。過濾非字母字符將成爲我的下一個任務:) – Perceptic

0

我曾嘗試以下方式來實現pyg_latin翻譯

import enchant 
input_str = raw_input("Enter a word:") 
d = enchant.Dict("en_US") 
d.check(input_str) 
pyg_latin = input_str[1:]+input_str[0]+"ay" 
print pyg_latin