0

私はプログラミングを始めたばかりで、Pythonを学ぼうとしています。第 4 章の最後の部分、演習 5how to think like a computer scientistは私を困惑させます。ユーザーが「a」、「b」、または「c」を入力できるようにシェル スクリプトを変更しようとしています。ユーザーの選択に基づいて正しい応答が出力されます。これは私がこれまでに実装した方法であり、誰かが私がここで欠けているものを教えてくれることを望んでいました.

def dispatch(choice):
    if choice == 'a':
        function_a()
    elif choice == 'b':
        function_b()
    elif choice == 'c':
        function_c()
    else:
    print "Invalid choice."

def function_a():
    print "function_a was called ..."

def function_b():
    print "function_b was called ..."

def function_c():
    print "function_c was called ..."

dispatch1 = raw_input ("Please Enter a Function.")
print dispatch(choice)

これを実行すると、名前の選択が定義されていないというエラーが表示されます。私はそれを吐き戻そうとしています function_b が呼び出されました... raw_input に入力されたときに。

助けてくれてありがとう、

ジョン

4

3 に答える 3

5

入力を受け取り、選択ではなく、dispatch1 に割り当てます。

choice = raw_input ("Please Enter a Function.")
print dispatch(choice)
于 2013-04-22T19:40:50.587 に答える
1

James は正しい (Lattyware も同様)。あなたはまだ学んでいるので、あなたが見ているものについてもう少し情報を提供することが役立つかもしれないと思いました.

ディスパッチするパラメーターは変数です。関数呼び出し自体の中で、それは「選択」と呼ばれます。raw_input を使用して入力をキャプチャすると、現在、「dispatch1」という名前の変数として保存されています。ディスパッチを呼び出した時点では、choice は未定義です (ただし、関数定義では choice と呼ばれているため、少し混乱します)。未定義であるという事実がエラーの原因です。

于 2013-04-22T19:46:47.070 に答える
0

作業例..ちなみに、Pythonのインデントに気をつけてください。

def dispatch(choice):
    if choice == 'a':
        function_a()
    elif choice == 'b':
        function_b()
    elif choice == 'c':
        function_c()
    else:
        print "Invalid choice."

def function_a():
    print "function_a was called ..."
def function_b():
    print "function_b was called ..."
def function_c():
    print "function_c was called ..."

choice = raw_input ("Please Enter a Function.")
dispatch(choice)
于 2013-04-22T19:46:05.367 に答える