我试图通过使用字典而不是一系列的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
答案 0 :(得分:2)
只需从字典中的函数中删除括号即可。将它们保留在其中会导致在声明字典时调用这些函数。
此外,由于输入到字典中的值是函数的返回值(即None
,而调用None()
会使您无处可坐;-)
答案 1 :(得分:0)
只需将函数名称指定为字典中的值
def hello():
print("Hello")
def goodbye():
print("Goodbye")
options = {'1': hello,
'2': goodbye}
chosen = '1'
options[chosen]()