我的交换箱系统无法在Python中运行

问题描述 投票:0回答:2

我是Python新手。我最近了解到,没有用于python的开关柜系统。相反,程序员必须使用字典数据类型编写一个。

我想使用开关盒制作菜单系统,代码如下所示:

switch={'1':func1(),'2':func2()} #func1() and func2() are two separate functions (menu options)
choice= input('choice : ')
switch[choice]

嗯,在我的交换系统中,无论我输入什么作为'choice',func1()仅运行。

任何帮助将不胜感激:)

python python-3.x switch-statement
2个回答
2
投票

根据您的代码,看起来func1和func2都将在每次代码运行时运行。问题是,当您声明字典时,您正在执行/调用函数(因为在函数名后有(),这是“调用”函数的方式),而不是仅存储指向的链接/引用。他们。

为了传递/存储对函数的引用而不调用它,只需键入其名称,最后不带()。然后,要调用在变量/某处引用的函数,请添加括号。

这应该起作用:

switch = {'1': func1, '2': func2} # func1() and func2() are two separate functions (menu options)
choice = input('choice : ')
switch[choice]()

请注意我如何从第一行的功能中删除()。还请注意,在最后一行,我通过使用键switch调用存储在choice中的函数,方法是在末尾添加()


3
投票

而不是将func1()放入字典中,请尝试将func1放入(无括号)。

>>> switch = {'1' : func1,         # No parentheses here
...           '2' : func2 }        # ...or here.
>>> choice = input('choice : ')
>>> switch[choice]()               # But do put parentheses here.

通过将func1()放入字典中,实际上是在调用该函数并将其结果存储在字典中。相反,如果您想通过字典来调用该函数,则需要存储函数handle(其变量名)并在索引到switch后调用它。

© www.soinside.com 2019 - 2024. All rights reserved.