我有一个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

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

1回复

str不是可调用对象python

我对为什么我的代码导致此错误感到有些好奇? 有人可以向我展示一些见识作为解决此问题的方法以及引起它的原因吗? 错误: 我的代码:
1回复

TypeError:“ str”对象在循环中调用函数时不可调用

显示的错误是 熵 0.940285958671信息(年龄)0.693536138896
1回复

无法摆脱TypeError:'str'对象不可调用

我正在尝试在ipython笔记本中制作/训练一个Twitter情绪分析器,并且我遇到了一段代码的严重问题: 我收到这个错误: 并且帮助会非常好,谢谢!
3回复

Python'str'对象不可调用Python 2.7.3

我目前正在编写一款交易游戏,用户可以连接到服务器,然后彼此进行交易并赚钱,等等。但是当我尝试 引发错误 我在Geany开发环境中使用Linux,Python版本2.7.3。 提前致谢。
1回复

在Delphi中是否可以像在Python中使用__call __()方法那样具有可调用对象?

如问题所示,使用Python我可以执行以下操作: class myCallableClass(object): def __call__(self, value): return 'myCallableClass: ' + value my_instance = m
1回复

我如何解决这个“TypeError:'str'对象不可调用”错误?

我正在创建一个基本程序,它将使用GUI来获取商品的价格,如果初始价格低于10,则从价格中扣除10%,或者如果初始价格是,则从价格中取20%的折扣大于十: 我不断收到此错误: easygui.msgbox("Your new price is: $"(float(price) * 0.1
1回复

TypeError:“节点”对象不可调用

尝试获取上一个节点时出现错误( TypeError: 'node' object is not callable )。 我究竟做错了什么? 我的节点类: 我的代码访问prev ( last_node的深度值应为5左右): 附加信息: 我试图向后遍历树,以查看所走的路
1回复

TypeError:'int'对象不可调用什么是错误的?

嗨,我目前正在为一个学校的小项目工作,任务是编写一个函数,该函数带有dna链和一个位置,并检查所选择位置前后的DNA是否互补。 这是我到目前为止提出的代码。 翻译功能只是为了检查互补性,并且工作正常。 但是,如果我尝试将DNA提供给lis函数,则会出现错误。 有人知道那里出了什么问
2回复

为什么“模块”对象不可调用? [重复]

可能重复: TypeError:“模块”对象不可调用 这是我的第一个Python尝试,只是在对我来说是一种新语言Python沉默了10年之后,试图重新获得基本的编程知识。 基本思想是决定其更好命中率的微型电池引擎。 接下来是错误代码。 因为我的python知识非常基础
1回复

TypeError:“元组”对象在尝试调用方法时不可调用

到目前为止,这是我正在做的事情: 但是我在使用此功能时遇到了很大的麻烦... 问题或多或少地使其起作用。 我的朋友和我曾尝试一切, 我们可以认为这个函数运行的时候,但无济于事。 这是我们最近的尝试: 尝试运行此命令后,我收到此错误: