在字典中使用菜单功能

时间:2019-07-09 17:16:08

标签: python dictionary menu

我试图通过使用字典而不是一系列的if,elif语句来创建一个简单的菜单。我的问题是当我在字典中将它们声明为定义时要调用的函数。另外,尝试调用字典时遇到错误。

我知道声明中缺少某些内容。定义中的内容无关紧要,如果它是可执行代码,则它在声明时执行,而不是在我调用它时执行。

至于调用字典的问题,我从阅读的所有内容中完全迷失了,我相信我做得正确。我提供了一个过于简化的版本,该版本可以重复出现的问题。

def hello():
    print("Hello")

def goodbye():
    print("Goodbye")

options = { '1' : hello(),
            '2' : goodbye()}

chosen = '1'

options[chosen]()

这是执行以上命令后得到的。

Hello
Goodbye
Traceback (most recent call last):
  File "main.py", line 12, in <module>
    options[chosen]()
TypeError: 'NoneType' object is not callable

我应该看看这个。

Hello

2 个答案:

答案 0 :(得分:2)

只需从字典中的函数中删除括号即可。将它们保留在其中会导致在声明字典时调用这些函数。

此外,由于输入到字典中的值是函数的返回值(即None,而调用None()会使您无处可坐;-)

答案 1 :(得分:0)

只需将函数名称指定为字典中的值

def hello():
    print("Hello")


def goodbye():
    print("Goodbye")


options = {'1': hello,
           '2': goodbye}

chosen = '1'

options[chosen]()