0

私は最近、サイト Codecademy.com を使用して Python でプログラミングする方法を学び始めました。このサイトでは Python 2.7 を使用しています。コンピューターに 2.7.3 と 3.3.2 の両方をインストールしていますが、Python 3 でプログラムを作成しています。

プログラム自体は、Pig Latin の翻訳者であるサイトのレッスンから得た単純で小さな概念実証です。私はそれをさらに一歩進めて、プログラムが元々行っていた 1 つの単語だけではなく、スペースやその他のインスタンスを含むテキストの段落全体で機能するように開発することにしました。

現時点での問題は、プログラムが何を実行しても同じものしか出力しないことであり、その理由はわかりません。

「これはまだ終わっていません」と出力するだけです。複数の単語のインスタンス用のコードの印刷は、明らかにまだ行われていません。

コードは次のとおりです。

pyg = 'ay'

raw_input = input('Enter your text here.  Numbers are not allowed. ')

if len(raw_input) > 0 and  raw_input.replace(' ', '').isalpha:
lower_input = raw_input.lower()

if lower_input[0] == " ":
    lower_input = lower_input[1:]

word_spacing = lower_input.replace(' ', '/')

if word_spacing.find('/'):
    print('This isn\'t finished yet.')

else:
    first_letter = raw_input[0]

    if first_letter == 'a' or 'e' or 'i' or 'o' or 'u':
        output = raw_input[1].upper() + raw_input[2:] + first_letter + pyg
        print(output)

    else:
        output = raw_input[0].upper() + raw_input[1:] + pyg
        print(output)

else:
print('The text you entered is invalid.')

end = input('Press Enter to exit')

誰かがコードを読んでこれをデバッグするのを手伝ってくれたら、それは本当に役に立ちます。しばらくじっと見つめているが、まだわからない。

4

2 に答える 2

2

raw_input.replace(' ', '').isalpha

関数を呼び出さずisalpha、参照しただけです。追加()


if first_letter == 'a' or 'e' or 'i' or 'o' or 'u':

以下と同じです:

if (first_letter == 'a') or ('e') or ('i') or ('o') or ('u'):

空でない文字列は True と見なされるため、これは常に True になります。

次のように変更します。

if first_letter in 'aeiou':


print('The text you entered is invalid.')また、下部にインデントするのを忘れていました。

于 2013-09-25T00:33:44.510 に答える