我有一个用户输入的Python程序。我存储用户输入一个名为" userInput"的字符串变量。我希望能够调用用户输入的字符串...
userInput = input("Enter a command: ")
userInput()
由此,我收到错误:TypeError:' str'对象不可调用
目前,我的程序是这样的:
userInput = input("Enter a command: ")
if userInput == 'example_command':
example_command()
def example_command():
print('Hello World!')
显然,这不是一种处理大量命令的非常有效的方法。 我想让str obj可以调用 - 无论如何这样做?
答案 0 :(得分:17)
更好的方法可能是使用dict:
def command1():
pass
def command2():
pass
commands = {
'command1': command1,
'command2': command2
}
user_input = input("Enter a command: ")
if user_input in commands:
func = commands[user_input]
func()
# You could also shorten this to:
# commands[user_input]()
else:
print("Command not found.")
基本上,您提供了文字命令与您可能想要运行的函数之间的映射。
如果输入太多,您还可以使用local
关键字,这将返回当前范围内当前定义的每个函数,变量等的字典:
def command1():
pass
def command2():
pass
user_input = input("Enter a command: ")
if user_input in locals():
func = locals()[user_input]
func()
但这并不完全安全,因为恶意用户可以输入与变量名称相同的命令,或者您不希望它们运行的某些功能,并最终导致代码崩溃。