0

Python で Pig Latin トランスレータを作成しようとしています。私はまだ完成品を持っておらず、Codecademy に取り組んでいます。これまでの私のコードは次のとおりです。

pyg = 'ay'

original = raw_input('Enter a word:')
if len(original) > 0 and original.isalpha():
    print original
    if first == "a" or "e" or "i" or "o" or "u":
        print "vowel"
    else:
        print "consonant"
else:
    print 'empty'
word = original.lower()
first = word [0]

最後の 2 行が適切でないことは確かですが、どこに行けばいいのか、その理由がわかりません。誰かが私にそれを説明できれば、それは素晴らしいことです. 私はこのプログラムの最初の文字が母音か子音かを確認したい段階にいるだけで、まだ翻訳の段階ではありません。

4

3 に答える 3

5

値を定義wordしてfirstいて、それらの値を確認した後であるため、定義後、長さを確認した後にそれらを移動してみてくださいoriginal(空の値でのインデックス エラーを回避するため)。

また、 を使用する場合if len(original) > 0、実際にはそれを に単純化します。これは、null 以外の値の場合にif original返されます。True

もう1つ-母音のチェックは期待値を返しません。代わりに、次のようにしてみてください。

if first in 'aeiou':

それを処理するためのより良い方法があると確信していますが、これはあなたのケースでうまくいくはずです。

編集:ifステートメントを@Levonのメソッドに変更します(これははるかにPythonicです )

于 2012-08-10T01:43:14.047 に答える
3

この行:

if first == "a" or "e" or "i" or "o" or "u":

期待どおりに動作しません。私は実際に数日前にこの正確な質問に基本的に答えました.

私がそこで行った説明が理解できない場合はお知らせください。

于 2012-08-10T01:41:43.107 に答える
3

(1)あなたのif-statement は、次のように短縮された (そして正しい) バージョンに書き直すことができます:

if first in 'aeiou':

あなたと同じ問題に取り組んでいる他の誰かのために、最近ここでより多くの説明でこれに答えました。

(2)次の 2 行のコードを配置する場所についての質問に答えてください。

word = original.lower()
first = word[0]

-statementの後に入れてprint originalください。if入力単語を小文字に変換し、単語の最初の文字を取得して変数に割り当て、firstその後、母音/子音をチェックするために使用されます。

于 2012-08-10T01:45:51.223 に答える