0

こんにちは、私は codeacademy で python のオンライン チュートリアルを行っています。すでに raw_input を使用して pyglatin の単語に変換する機能的な pyg ラテン トランスレータを作成していますが、このトランスレータを単語を受け取る関数に変換しようとすると、エラーが発生します。これらの機能に根本的な違いはありますか?

関数トランスレータは次のとおりです。

original = raw_input("Enter a word in English to translate to Pyg Latin:")

vowels = ["a", "e", "i", "o", "u"]

if len(original) > 0 and original.isalpha():
    word = original.lower() 
    if word[0] in vowels:
        translation = word + "ay"
        print translation
    else:
        translation = word[1:] + word[0] + "ay"
        print translation
else:
    print "This is not a valid entry! Please try again."

# Here is the function that comes up with an error:

vowels = ["a", "e", "i", "o", "u"]

def pyglatin(eng):
    if eng.isalpha() and len(eng) > 0:
        word = eng.lower()
        if word[0] in vowels:
            return word + "ay"
        else:
            return word[1:] + word[0] + "ay"
    else:
        return False

たとえば、関数を呼び出して pyglatin(ant) と入力して ant という単語の翻訳を表示しようとすると、次のエラーが発生します。

トレースバック (最新の呼び出しが最後):

ファイル ""、行 1、pyglatin(ant) の NameError: 名前 'ant' が定義されていません

すべてのインデントが正しいことに注意してください。ただし、ここでは正しい間隔を示していない可能性があります。私の論理に根本的な問題があるかどうかを知りたいだけです。ありがとう!!!

4

2 に答える 2

0

エラーが何であるかを知らずに、知ることは困難です。おそらく: 問題は、プログラムのグローバル スコープでreturn ...を何にも割り当てていないことでしょうか? これはどういう意味ですか?例:

def hello():
    return 'Hello, world!'

hello()

output: の戻り値を参照する手段を提供していないため、この場合は何も出力しませんhello()。ただし、次のことを行うとします。

print(hello())
--> Hello, world!

greeting = hello()
print(greeting)
--> Hello, world!

最初の例では、return ステートメントを からhello()出力し、2 番目の例では戻り値を変数に代入して、再度参照する手段を提供します。

于 2013-04-27T06:59:16.027 に答える