2016-12-30 9 views
0

私は翻訳者を作ることができましたが、翻訳は1語だけです。私は本当に複数の言葉で文を翻訳することを可能にする方法を理解していません。PygLatinの文章を翻訳する

誰かが私を助けることを願っています!

#List Operators 
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"] 

#Instructions 
print ("Program to translate sentences to pig latin.") 
print ("Avoid using symbols and punctuation.") 

#Define word 
word= "" 
while word != "exit": 
    word = input("Enter a word(s) to translate or Exit: ") 
    words = word.split() 
    for word in words: 
     if word.isalpha(): 
      word = str(word) 

#Translate word by checking how it starts 
      first_letter = word[0] 
      if len(word) == 1: 
       print ("Word is only one letter!") 
      else: 
       if first_letter in vowels: 
        print (word + "yay") 
       else: 
        second_letter = word[1] 
        if first_letter in consonants: 
         print (word[1:] + word[0] + "ay") 
        else: 
         print (word[2:] + word[:2] + "ay") 

     else: 
      if word.lower() == "exit": 
       word = word.lower() 
       print("Goodbye.") 
      else: 
       print("Invalid word: %s! Try again." % word) 

    stored_strings = [] 
    stored_strings.append('word') 
    ''.join(stored_strings) 
    print("") 
+0

Y区切り記号で文を分割するsplit関数を見てください。 –

+0

あなたのコードでは、 'a 'のように1文字だけを入力するケースは扱われません。 –

答えて

0

単語全体を文章として受け入れ、空白で分割します。以下は、split関数のドキュメントです。このような何かは、あなたは、単にすべての単語を反復処理、その後、のstring.Split()関数で単語の配列にあなたの文章を分割することができ

sentence = raw_input("Enter your sentence ") 
words = sentence.split() 
for word in words: 
    # Execute your pyglatin code on `word` 
0

、お手伝いをします。

たとえば、スニペットに2行追加すると、目的の結果が得られます。

# List Operators 
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"] 

# Instructions 
print("Program to translate sentences to pig latin.") 
print("Avoid using symbols and punctuation.") 

# Define word 
word = "" 
while word != "exit": 
    word = input("Enter a word(s) to translate or Exit: ") 
    words = word.split() 
    for word in words: 
     if word.isalpha(): 
      word = str(word) 

      # Translate word by checking how it starts 
      first_letter = word[0] 
      second_letter = word[1] 
      if first_letter in vowels: 
       print(word + "yay") 
      else: 
       if first_letter and second_letter in consonants: 
        print(word[2:] + word[:2] + "ay", end=" ") 
       else: 
        print(word[1:] + word[0] + "ay", end=" ") 

     else: 
      if word.lower() == "exit": 
       word = word.lower() 
       print("Goodbye.") 
      else: 
       print("Invalid word: %s! Try again.\n" % word) 
    print("") 

HTH!

0

コードを少し簡略化するように更新しました。

1つの文字を入力するという条件を追加しました。私はwhileループの始めに終了条件を設定しました。

仕様がないので、実際にアルゴリズムが何をしているのか確認できませんでした。

# List Operators 
vowels = "aeiou" 
consonants = "bcdfghjklmnpqrstvwxyz" 

# Instructions 
print ("Program to translate sentences to pig latin.") 
print ("Avoid using symbols and punctuation.") 

# Infinite loop that will be stopped when user inputs `exit` 
while True: 
    words = input("Enter a word or a sentence to translate or Exit: ").lower() 
    if words == "exit": 
     print("Goodbye.") 
     break 
    for word in words.split(): 
     # Translate word by checking how it starts 
     first_letter = word[0] 
     if first_letter in vowels: 
      print (word + "yay\n") 
     elif len(first_letter) == 1: 
      print (word + "\n") 
     else: 
      second_letter = word[1] 
      if first_letter in consonants and second_letter in consonants: 
       print (word[2:] + word[:2] + "ay\n") 
      else: 
       print (word[1:] + word[0] + "ay\n") 
+0

分割関数の後に出力文字列をどのように再結合しますか? – Francesco

+0

さて、コマンド 'print'で印刷されたすべての文字列をリストに格納する必要があります。 ( 'stored_strings = []'、 'stored_strings.append( 'word')')。その後、 '' '.join(stored_strings) 'や'' \ n '.join(stored_strings)を使うことができます。 –

+0

私は文字列を追加して結合しようとしましたが、結果はありませんでした。確かに私はちょうど初心者です。私はこれまでのものを見ることができるように自分のコードを更新しました。ありがとう! – Francesco

0

単語= raw_input(「コピー変換または終了するには、単語を入力してください。」)実行する必要がありますが継続的に

入力することができますしかし、あなたのコード内で文字を入力すると、エラーに

を引き起こす可能性があります:

試してみてください。

 first_letter = word[0] 

     second_letter = word[1] 

     if first_letter in vowels: 

      print (word + "yay\n") 

     else: 

      if first_letter and second_letter in consonants: 

       print (word[2:] + word[:2] + "ay\n") 

      else: 

       print (word[1:] + word[0] + "ay\n") 

    except IndexError: 

     print('Input word len < 2 !') 
+0

答えを整理する必要があります。 –

関連する問題