0

我刚刚开始编程并正在尝试学习 Python。第四章的最后一部分,练习 5,how to think like a computer scientist难倒我。我正在尝试修改 shell 脚本,以便用户可以输入“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 也是如此)。由于您仍在学习,我认为提供有关您所见内容的更多信息可能会有所帮助。

dispatch 的参数是一个变量。在函数调用本身内部,它被称为“选择”。当您使用 raw_input 捕获输入时,您当前将其保存为名为“dispatch1”的变量。在你调用 dispatch 的时候 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 回答