【问题标题】:A replacement for nesting if's?嵌套if的替代品?
【发布时间】:2012-06-01 02:21:00
【问题描述】:

我正在制作一种语言,每次有人想要访问一个变量时,它都带有一个 $ 符号。但是,在每个函数上我都必须有一个 if,看看它的第一个字母是否是 $,并且每次传递一个参数时,对于每个参数我都必须这样做。它变得混乱。我不想嵌套 if,但是拥有它,以便我可以轻松地对其应用函数并访问它。有点难解释,但我会用一些代码来解释。

def varcmd(cmd, variables):
    if cmd.__len__() < 4:
        print "Too little arguments! str <var> = <string>"
    else:
        if cmd[2] == "=":
            if cmd[3][:1] == "$":
                variables[cmd[1]] = variables[cmd[3][1:]]
            else:
                variables[cmd[1]] = cmd[3]
        else:
            print "Incorrect syntax! str <var> = <string>"

随着我不断添加到这个函数,if 将呈指数增长,实际上每个函数都可以接受变量,所以每个函数都会有大量的 if。基本上,我想要这样的东西:

def varcmd(cmd, variables):
    if cmd.__len__() < 4:
        print "Too little arguments! str <var> = <string>"
    else:
        if cmd[2] == "=":
            variables[cmd[1]] = auto_convert_if_var.cmd[3][1:]
        else:
            print "Incorrect syntax! str <var> = <string>"

【问题讨论】:

  • 我连python都不知道,但是你不能用循环来遍历命令参数吗?
  • 不太确定你想要什么,但它看起来像递归。您可以在 Python 中声明递归函数。
  • 这确实很痛苦!幸运的是,这是一个很好理解的过程。您首先需要在这里做的事情是标记您的输入。
  • 一个小建议:使用elif: 而不是`else: if:
  • 你为什么不用len(cmd) 而不是cmd.__len__()

标签: python function syntax built-in


【解决方案1】:

看起来您的需求已经变得足够复杂,需要构建parser

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多