1

私はPythonで豚のラテン語翻訳者に取り組もうとしていました.forloopをセットアップして、ユーザーが入力した文字列の各文字をループしました。forloop が最初の子音に続くすべての子音を母音に到達するまで (たとえば、"string" という単語の "str" など) うまくキャッチできるかどうかをテストするために、これらの連続する子音をすべて出力する print ステートメントを作成しました。子音で始まる単語。残念ながら、forloop は文字 "a" のみを省略しますが、母音 "e"、"i"、"o"、"u" を出力できます。

ここでの私の質問は、入力された単語の最初の母音まで子音の最初の文字列のみが表示されるように、このコードを修正するにはどうすればよいですか?

私はこれを行っているプロセスを説明する言語を特に備えていませんが、うまくいけば、この嘆願が問題の性質を表現するのに役立つ十分に近似したものになることを願っています. ありがとう。

コード:

def translate():
     print("Welcome to the Pig Latin Translator")
     original=raw_input("What word would you like to translate?")
     length=len(original)
     move_letters=""
     index=0
     for i in range(length):
        if original[i]!=("a" or "e" or "i" or "o" or "u"):
            print(original[i])
            move_letters=move_letters+original[i]
            index+=1


translate()
4

1 に答える 1

1

表現

("a" or "e" or "i" or "o" or "u")

と同等"a"です。これが、コードがキャッチするだけの理由です"a"。あなたは書く必要があります:

if not original[i] in ("a","e","i","o","u") :

また

if original[i] != "a" and original[i] != "e" and original[i] != "i" and original[i] != "o" and original[i] != "u" :

("a" or "e" or "i" or "o" or "u")が同等である理由は"a"、その定義によれば、or演算子は true と同等の最初のオペランドを返すか0、何もない場合に返すためです。この場合、'"a"' は true と同等であるため、式全体の結果です。

以下も追加する必要があります。

else:
    break

if

于 2013-08-26T22:25:14.117 に答える