2017-04-24 68 views
1

我遇到了代碼只生成第一個單詞的前兩個字母,然後在運行時將'AY'附加到結尾的問題。我似乎無法弄清楚如何糾正這個錯誤。python的輸出代碼pig latin問題

def main(): 
     strin = input('Enter a sentence (English): ') 
     strlist = strin.split() 
     i = 0 
     pigsen = '' 
     while i < len(strlist): 
      word = strlist[i] 
      j = 1 
      fc = word[0].upper() 
      pigword ='' 
      while j < len(word): 
       pigword += word[j].upper() 
       j += 1 
       pigword += fc + 'AY' 
       pigsen += pigword + ' ' 
       i +=1 
     print('Pig Latin: ' +str(pigsen)) 
main() 
+0

瞭解如何使用Python源代碼調試器並逐步完成代碼。錯誤將更容易找到。 –

回答

0

首先,我會認爲這是一個豬拉丁產生的僅僅是開始,一旦你獲得這麼多的工作,你會添加其他規則(至少一對夫婦更多)。其次,讓我們簡化代碼修復它的一種方式:

def main(): 
    sentence = input('Enter a sentence (English): ') 

    words = sentence.upper().split() 

    latin_words = [] 

    for word in words: 

     first, rest = word[0], word[1:] 

     latin_word = rest + first + 'AY' 

     latin_words.append(latin_word) 

    print('Pig Latin:', *latin_words) 

main() 

用法

> python3 test.py 
Enter a sentence (English): He complimented me on my English 
Pig Latin: EHAY OMPLIMENTEDCAY EMAY NOAY YMAY NGLISHEAY 
> 

我要說你的代碼的問題是,你做它太複雜了。