当前位置: 首页 > 知识库问答 >
问题:

如何避免选项菜单[duplicate]中出现大量if和elif

左丘昕
2023-03-14

我想建立一个选项菜单,用户在其中键入一个数字,并根据该数字调用一个函数来执行某些操作。。例如:

def func1():
    pass
def func2():
    pass
def func3():
    pass

user_input = int(input("enter option: "))
if user_input == 1:
    func1()
elif user_input == 2:
    func2()
elif user_input == 3:
    func3()

因此,相反,在几行代码中构建一些东西,它们将以相同的方式工作,当然也可以在获取参数的函数上工作

共有2个答案

通寂离
2023-03-14

您可以使用dict,它可以获取要执行的正确函数:

def func1():
    pass
def func2():
    pass
def func3():
    pass

f = {1:func1, 2:func2, 3: func3}

user_input = int(input("enter option: "))
if user_input in f:
    f[user_input]()
戎永福
2023-03-14

您可以将函数本身存储在字典中,然后使用用户输入访问它们

def func1():
    pass
def func2():
    pass
def func3():
    pass

funcs = {1:func1, 2:func2, 3:func2}

user_input = int(input("enter option: "))
funcs[user_input]()
 类似资料:
  • 问题内容: 动物 狮子 鹿 测试动物 在上面的情况下,似乎没有问题,但是如果您有很多扩展的基类扩展,那么我们也需要那么多的if块。解决这个问题? 问题答案: 避免在基类中(不 使用 诸如or 的非描述性名称)发明任何新的人工方法的一种优雅方法是 使用 访问者模式 。这是一个例子: 动物 狮子 和 鹿 游客 测试动物

  • 我读过很多关于代码重构和避免if-else语句的主题。实际上,我有一个类,我使用了很多if-else条件。 更多细节:我正在使用pull解析器,在soap响应的每一行,我会检查是否有我感兴趣的标签,如果没有,请检查另一个标签等: 现在,我想用别的东西,而不是那些if else条件,但我不知道是什么。 你能给我举个例子吗?

  • 问题内容: 我有以下内容: 但是,并非总是有一个结果会给我以下错误: NoSuchElementException:没有值 那么,如果没有值,我该如何返回? 问题答案: 您可以使用,它比检查要简单得多:

  • 本文向大家介绍Android开发实现SubMenu选项菜单和子菜单示例,包括了Android开发实现SubMenu选项菜单和子菜单示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android开发实现SubMenu选项菜单和子菜单。分享给大家供大家参考,具体如下: 简介: SubMenu:代表一个子菜单,包含1~N个MenuItem 实现效果: 具体实现方法: 主活动 MainActi

  • 问题内容: 我已经在C中实现了一些排序算法(用于对整数进行排序),并谨慎地用于存储与数据大小有关的任何内容(因此还包括了计数器和填充物),因为该算法也应使用数千兆字节的数据集进行测试整数 这些算法应该很好,并且分配的数据量应该没有问题:数据存储在文件中,并且每次仅加载很少的块,即使将内存中的缓冲区阻塞为任意大小,也可以正常工作。 使用数据集最多4千兆字节(因此16GB数据)的测试可以正常工作(排序

  • 解决方法:只需在单选按钮中添加autocomplete=“off”。 编辑:我最初对错误原因的评估是错误的。这并不取决于用户是否做出选择。当我在表单的其余部分使用Chrome的自动填充功能时。如果使用自动填充,则不会传递任何值:-/ EDIT2:看起来这是一个已知的错误。Chrome自动填充未填充单选按钮http://productforums.google.com/forum/#!主题/chro