私のスクリプトは、すべてのstring.Split要素を反復処理されていない理由を私は理解していませんか?

IT_Support:

このPythonの演習の目的は、最後に最初の文字を移動し、最後に「AY」を付加することにより、その豚に変身テキストラテン、単純なテキスト変換修正することを各単語を機能を構築することです。

たとえば、pythonとして終わりますythonpay

私は実際にこのスクリプトを建てたが、私はそれがすべての反復処理されていない理由として混乱していtext.split要素を?そして、なぜそれが唯一の最後の要素を変更していますか?

def pig_latin(text):
      say = ""

    # Separate the text into words
      words = text.split()

      for word in words:
    # Create the pig latin word and add it to the list

        new_word = word[1:] + word[0] + "ay"
        say =  "".join(new_word)

    # Turn the list back into a phrase
       return say

    print(pig_latin("hello how are you")) 
    # Should be "ellohay owhay reaay ouyay"

    print(pig_latin("programming in python is fun")) 
    # Should be "rogrammingpay niay ythonpay siay unfay"
LTheriault:

ここでこのセクションでは、理由です。あなただけのたびにこのループが実行されますので、それは以前の値を上書きし、1つのnew_word変数を持っています。上書きされない唯一の値は、最後の一つであり、あなたは、単一の文字列で終わります。

for word in words:
    new_word = word[1:] + word[0] + "ay"
    say =  "".join(new_word)

代わりに、それぞれの新しい単語がリストに終わることを確認してください。それを行うための最も直感的な方法は、IMO、リスト内包することです。以下は、このためにそれをフォーマットする方法をですが、それを行う方法を見上げます。真剣に、それはあなたの時間の数分だと、あなたが学ぶことを続けて、彼らはあなたの最高の友人の一人だろう。また、辞書と同じことを行うことができます。

pig_latin_text = [word[1:] + word[0] + "ay" for word in words]
say =  " ".join(pig_latin)

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=399577&siteId=1