2017-04-24 23 views
1

最初の単語の最初の2文字を生成し、最後に 'AY'を付けるだけで問題が発生します。私はこのエラーを修正する方法を見つけることができないようです。Pythonの出力コードで豚ラテンの問題が発生する

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() 

USAGE

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

私はあなたのコードに問題があなたはそれがあまりにも複雑になると言うでしょう。

関連する問題