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

如何在python中实现Switch Case?[副本]

慎懿轩
2023-03-14

我试图用Python实现switch-case语句。我需要帮助,因为控制台上没有打印任何内容。我想用这个开关触发一些功能

def do_something():
    print("do")


def take_something():
    print("take")


switch = {
    "do": do_something,
    "take": take_something
}


def execute_command(command):
    switch.get(command, lambda: print("Invalid command!"))


execute_command(input())

共有2个答案

蒋奕
2023-03-14

此行:开关。get(命令,lambda:print(“无效命令!”)正在检索函数,但您没有对其执行任何操作。您必须通过添加()来调用函数,如下所示:

switch.get(command, lambda: print("Invalid command!"))()
王成化
2023-03-14

你几乎是对的。

def execute_command(command):
    switch.get(command, lambda: print("Invalid command!"))() # maybe args 

自从开关。get返回一个函数

或者更复杂的方式,使用globals()返回当前全局变量的判断:

def dojob():
    print("do")


def takejob():
    print("take")


 def execute_command(command):
    globals().get(command, lambda: print("Invalid command!"))()

execute_command(input()) 

然后输入dojob,takejob

 类似资料:
  • 问题内容: 我以前的编程中,代码段仅用于调试目的(记录命令等)。通过使用预处理程序指令,可以完全禁用这些语句以进行生产,如下所示: 做类似的事情的最好方法是什么? 问题答案: 如果只想禁用日志记录方法,请使用该模块。如果日志级别设置为排除调试语句,那么它将非常接近无操作(它仅检查日志级别并返回而不插入日志字符串)。 如果要在特定条件下以字节码编译时实际删除代码块,则唯一的选择是相当神秘的全局变量。

  • 问题内容: 如何实现与C#代码等效的Python? 这是一个好主意吗??请在您的答案中举例说明。 问题答案: 正如其他人在这里提到的: 在Python中不需要接口。这是因为Python具有适当的多重继承,还具有鸭式输入法,这意味着 必须 在Java中具有接口的地方,而不必在Python中具有接口。 也就是说,接口还有多种用途。其中一些被Python 2.6中引入的Pythons抽象基类覆盖。如果您

  • 问题内容: 我想知道Python 3中的新super是如何实现的。 我做了一个小例子之后,这个问题就浮现在脑海中,我得到了一个奇怪的错误。我正在使用Pyutilib组件体系结构(PCA),并且已经制作了自定义元类来驱动另一个类的创建: 我收到以下错误: 我wonderign究竟超(一样),它引发的错误,而所有的,并存在。另外的“老方法”-正在工作。 问题答案: 如何执行?这是python3.3的代

  • 问题内容: 我已经实现了 算法 对于GMM使用这个 后[GMMs]与最大似然优化 努比](https://towardsdatascience.com/how-to-code-gaussian-mixture-models- from-scratch-in-python-9e7975df5252)未成功,如下所示: when I run the algorithm on a 1-D time-se

  • 我已经将我的项目迁移到androidX,我想实现一个带有用户积极和消极反馈的报警对话框。 我正在使用以下代码: 但我在运行应用程序时遇到了这个错误: IllegalStateException:您需要在此活动中使用theme.AppCompat主题(或后代)。

  • 从Udacity的深度学习类来看,y_i的软最大值只是指数除以整个Y向量的指数之和: 其中< code>S(y_i)是< code>y_i的softmax函数,而< code>e是指数,而< code>j是输入向量y中的列数 我尝试了以下方法: 返回: 但建议的解决方案是: 它产生与第一个实现相同的输出,即使第一个实现显式地取每列和max的差值,然后除以总和。 有人能用数学说明为什么吗?一个正确,