You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现可将变量赋值序列推导为单一输出等式的脚本

多步变量赋值表达式展开脚本实现

你需要的功能可以通过如下方案快速实现,核心逻辑是按顺序递归替换所有变量,同时给替换的表达式套括号避免运算优先级混乱。

参考示例对照

输入内容:a=2+8,b=3+9,c=4+8,d=5+9,e=a+b,f=c+d,g=0+6,h=1+7,i=e*g,j=f+h,output=i+j
预期输出:output=(((2+8)+(3+9))*(0+6))+(((4+8)+(5+9))+(1+7))
实际运行代码后输出和预期完全匹配。

可直接运行的Python实现

def expand_expression(input_str):
    # 拆分所有赋值语句
    assign_items = input_str.strip().split(',')
    var_pool = {}
    output_expr = ""
    for item in assign_items:
        key, value = item.split('=', 1)
        if key == "output":
            output_expr = value
        else:
            var_pool[key] = value

    # 递归替换所有变量
    def recursive_replace(expr):
        # 按变量名长度倒序替换,避免短变量名先替换导致长变量名匹配错误
        sorted_vars = sorted(var_pool.keys(), key=lambda x: -len(x))
        for var in sorted_vars:
            if var in expr:
                expr = expr.replace(var, f"({var_pool[var]})")
        # 还有变量就继续递归
        if any(var in expr for var in var_pool):
            return recursive_replace(expr)
        return expr

    final_expr = recursive_replace(output_expr)
    return f"output={final_expr}"

# 测试用例
if __name__ == "__main__":
    test_input = "a=2+8,b=3+9,c=4+8,d=5+9,e=a+b,f=c+d,g=0+6,h=1+7,i=e*g,j=f+h,output=i+j"
    print(expand_expression(test_input))

逻辑说明

  • 先解析输入的所有赋值语句,把自定义变量和对应表达式存入字典,单独提取出最终输出的表达式
  • 递归替换过程中给每个替换的表达式外层套括号,完全保留原运算优先级,不会出现运算顺序错误
  • 变量按长度倒序替换,兼容存在变量名包含关系的场景(比如同时有a和aa两个变量)
  • 支持任意层数的变量嵌套引用,不需要手动指定替换顺序

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:54:05