Python raw_input无法正常工作

时间:2013-04-22 19:38:52

标签: python

我刚开始编程并且正在尝试学习Python。 how to think like a computer scientist的第四章,练习5的最后一部分让我很难过。我正在尝试修改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)

当我运行这个时,我得到名称选择未定义错误。我正试图让它吐出来后函数被调用...当它被输入raw_input时。

感谢您的帮助,

约翰

3 个答案:

答案 0 :(得分:5)

您正在接受输入并将其分配给dispatch1,而不是选择:

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

答案 1 :(得分:1)

詹姆斯是正确的(就像Lattyware一样)。由于您还在学习,我认为可能有助于提供有关您所看到的内容的更多信息。

要发送的参数是变量。在函数调用本身内部,它被称为“选择”。使用raw_input捕获输入时,您当前将其保存为名为“dispatch1”的变量。在调用dispatch时,选择是未定义的(但是,因为它在函数定义中被称为choice,所以有点令人困惑)。未定义的事实是导致错误的原因。

答案 2 :(得分: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)