我有一个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可调用-无论如何这样做?

===============>>#1 票数:19 已采纳

更好的方法可能是使用字典:

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()

不过,这并不完全安全,因为恶意用户可能输入与变量名相同的命令或某些您不希望其运行的功能,最终导致代码崩溃。

  ask by just_a_programmer translate from so

未解决问题?本站智能推荐: