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

如何简化三个变量多类型运算组合求值的程序代码

核心实现思路
  • 三个变量做二元运算需要2个运算符位置,每个位置有6种运算符可选,总共有6*6=36种组合,完全不需要逐个手写表达式。你提到的「把运算符存入数组遍历替换」的思路完全可行,是最优的实现方案。
  • 计算时注意遵循所用编程语言的默认运算符优先级,比如*优先级高于加减、位运算优先级低于算术运算,避免自行强制左序计算导致和手写表达式结果不一致。
最简实现示例(Python)

直接拼接表达式字符串调用eval计算,完全复用原生运算符优先级逻辑,代码量最少:

# 自定义变量值
a = 5
b = 3
c = 2

# 运算符列表
op_list = ['+', '-', '*', '&', '|', '^']

# 遍历所有运算符组合
for op1 in op_list:
    for op2 in op_list:
        expr = f"{a} {op1} {b} {op2} {c}"
        res = eval(expr)
        print(f"{expr} = {res}")

如果你的使用场景存在不可信输入,担心eval的安全问题,可以用运算符映射的方式手动处理运算逻辑,示例如下:

import operator
from itertools import product

a = 5
b = 3
c = 2

# 运算符与对应运算函数的映射
op_map = [
    ('+', operator.add),
    ('-', operator.sub),
    ('*', operator.mul),
    ('&', operator.and_),
    ('|', operator.or_),
    ('^', operator.xor),
]

# 遍历所有运算符组合,按左序计算(如需匹配原生优先级,可自行补充优先级判断逻辑)
for (op1_str, op1_func), (op2_str, op2_func) in product(op_map, repeat=2):
    step1 = op1_func(a, b)
    res = op2_func(step1, c)
    print(f"{a} {op1_str} {b} {op2_str} {c} = {res}")
其他语言适配方案
  • 支持eval类语法的语言(JavaScript、PHP等),都可以参考上面拼接表达式的方式实现,代码最精简。
  • 不支持eval或对性能要求极高的场景,可以定义运算符结构体存储符号、优先级、运算匿名函数,遍历组合后按优先级判断运算顺序再计算;也可以用宏/元编程在编译期生成所有表达式,运行期无额外开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:36:00