我刚开始编程并且正在尝试学习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时。
感谢您的帮助,
约翰
答案 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)