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

如何通过条件判断简化多输入量的ARB计算函数?

统一套利计算函数实现方案

核心思路

通过可变参数接收所有输入,先校验参数合法性,再根据输入的参数对数量n自动匹配对应计算逻辑,将重复的多结果计算逻辑统一处理,避免编写12个重复函数。

代码实现

def calculate_arb(*args):
    # 校验参数是否为成对输入(x1,y1, x2,y2...)
    if len(args) % 2 != 0:
        raise ValueError("参数必须成对输入,格式为x1,y1,x2,y2,...xn,yn")
    
    result_count = len(args) // 2
    odds = args[::2]  # 提取所有赔率值
    # 若需要使用y参数(如投注上限等),可通过y_values = args[1::2]提取

    # 根据结果数量匹配计算逻辑
    if result_count == 2:
        # 双结果场景(原arb_2odds逻辑)
        x1, x2 = odds
        arb_sum = 1/x1 + 1/x2
        if arb_sum < 1:
            profit_rate = (1 - arb_sum)/arb_sum * 100
            stake_ratios = [(1/x1)/arb_sum, (1/x2)/arb_sum]
            return {"套利空间": f"{profit_rate:.2f}%", "投注比例": stake_ratios}
        return {"套利空间": "无"}
    
    elif result_count == 3:
        # 三结果场景(原arb_3odds逻辑)
        x1, x2, x3 = odds
        arb_sum = 1/x1 + 1/x2 + 1/x3
        if arb_sum < 1:
            profit_rate = (1 - arb_sum)/arb_sum * 100
            stake_ratios = [(1/x1)/arb_sum, (1/x2)/arb_sum, (1/x3)/arb_sum]
            return {"套利空间": f"{profit_rate:.2f}%", "投注比例": stake_ratios}
        return {"套利空间": "无"}
    
    elif 4 <= result_count <= 14:
        # 4到14结果通用逻辑,无需重复编写
        arb_sum = sum(1/odd for odd in odds)
        if arb_sum < 1:
            profit_rate = (1 - arb_sum)/arb_sum * 100
            stake_ratios = [(1/odd)/arb_sum for odd in odds]
            return {"套利空间": f"{profit_rate:.2f}%", "投注比例": stake_ratios}
        return {"套利空间": "无"}
    
    else:
        raise ValueError(f"仅支持2-14个结果的套利计算,当前输入对应{result_count}个结果")

关键说明

  1. 参数接收:用*args接收任意数量的参数,自动适配2到14对输入的场景。
  2. 逻辑复用:4到14结果的计算逻辑本质一致,直接统一处理,避免重复代码。
  3. 兼容性:保留原双结果、三结果的独立逻辑分支,若原函数有特殊处理(如额外校验、定制化计算),可直接在对应分支中修改,无需改动通用逻辑。
  4. 错误处理:添加参数合法性校验,避免非法输入导致的计算错误。

使用示例

# 双结果场景调用
print(calculate_arb(1.95, 2.05))
# 三结果场景调用
print(calculate_arb(3.1, 3.1, 3.1))
# 10结果场景调用(示例)
print(calculate_arb(11.0, 0, 11.0, 0, 11.0, 0, 11.0, 0, 11.0, 0, 11.0, 0, 11.0, 0, 11.0, 0, 11.0, 0, 11.0, 0))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:48:21