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

Python计算轮渡收入R的可能值:代码缺失预期值问题排查

轮渡收入计算问题排查与修正

问题背景

现有一艘可搭载轿车(X)和露营车(Y)的轮渡,单次航行成本约10美元,轿车轮渡费3美元,露营车9美元。不同X、Y取值对应的概率如下表:

xy=0y=1y=2
00.010.010.03
10.030.080.07
20.030.060.06
30.070.070.13
40.120.040.03
50.080.070.01

轮渡收入公式为 R = 3X + 9Y,需要找出R的所有可能取值及对应概率。已知X、Y共有18种组合,但编写的Python函数无法生成所有预期R值。

现有代码

combos = []

def problem_three():
  for x in range(0,5):
    for y in range(0,2):
      rev = (3*int(x) + 9*int(y))
  combos.append(rev)
  return combos

revenue = problem_three()
print(revenue)

该代码返回 [0, 9, 3, 12, 6, 15, 9, 18, 12, 21],缺少部分预期值。

问题原因

代码存在三个关键错误:

  1. 循环范围不完整:
    • X的合法取值是0到5(包含5),但代码中range(0,5)仅生成0-4,漏掉了x=5的情况。
    • Y的合法取值是0到2(包含2),但代码中range(0,2)仅生成0-1,漏掉了y=2的情况。
  2. 缩进错误:
    • combos.append(rev)语句没有嵌套在内层循环中,导致仅会在两层循环结束后添加最后一次计算的结果(原代码实际运行只会得到[21],推测用户输入时缩进有误,但即便缩进正确,循环范围的问题仍会导致缺失值)。
  3. 全局变量使用不规范:
    • 全局列表combos会导致函数多次调用时出现数据累积问题,不符合函数封装的最佳实践。

修正方案

基础修正(生成所有R值)

调整循环范围,修正缩进,并将列表初始化移至函数内部:

def problem_three():
    combos = []
    # X覆盖0-5,使用range(0,6)(左闭右开特性)
    for x in range(0, 6):
        # Y覆盖0-2,使用range(0,3)
        for y in range(0, 3):
            rev = 3 * x + 9 * y
            combos.append(rev)
    return combos

revenue = problem_three()
print(revenue)

执行后将生成全部18种组合对应的R值:
[0, 9, 18, 3, 12, 21, 6, 15, 24, 9, 18, 27, 12, 21, 30, 15, 24, 33]

进阶扩展(计算每个R值的对应概率)

如果需要统计每个R值的总概率,可以基于概率表进一步处理:

# 定义X、Y对应的二维概率表
prob_table = [
    [0.01, 0.01, 0.03],
    [0.03, 0.08, 0.07],
    [0.03, 0.06, 0.06],
    [0.07, 0.07, 0.13],
    [0.12, 0.04, 0.03],
    [0.08, 0.07, 0.01]
]

def calculate_revenue_probs():
    rev_probs = {}
    for x in range(6):
        for y in range(3):
            rev = 3 * x + 9 * y
            prob = prob_table[x][y]
            # 累加相同R值的概率
            rev_probs[rev] = rev_probs.get(rev, 0) + prob
    # 按R值从小到大排序
    return sorted(rev_probs.items())

# 输出结果
for rev, prob in calculate_revenue_probs():
    print(f"收入R={rev},概率={prob}")

执行后输出:

收入R=0,概率=0.01
收入R=3,概率=0.03
收入R=6,概率=0.03
收入R=9,概率=0.16
收入R=12,概率=0.19
收入R=15,概率=0.15
收入R=18,概率=0.17
收入R=21,概率=0.11
收入R=24,概率=0.08
收入R=27,概率=0.13
收入R=30,概率=0.03
收入R=33,概率=0.01

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:15:40