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

如何用循环条件实现Roulette game连胜次数与平均连胜长度统计

实现思路与可运行代码

原有代码的问题

  • 你写的while循环中没有修改i的值,会进入死循环
  • 末尾的break会直接终止外层的for循环,无法完成全序列遍历
  • 没有新增变量存储连胜次数、总连胜长度等核心统计指标

实现逻辑(仅使用循环+条件语句)

首先初始化4个核心变量:

  • 初始资本start_capital,用来和第一局的结果做对比
  • win_streak_count = 0:统计总共有多少次赢的连胜
  • total_win_length = 0:统计所有赢连胜的总长度,用来计算平均值
  • current_streak = 0:统计当前正在持续的赢连胜长度

遍历逻辑:

  1. 逐对对比相邻两个资本值,如果后一个 > 前一个,说明当前局赢,当前连胜长度+1
  2. 如果后一个 <= 前一个,说明当前连胜中断:如果此时当前连胜长度>0,就把这次连胜计入统计,再重置当前连胜长度为0
  3. 遍历结束后需要额外判断一次:如果序列末尾刚好是连胜状态,要把最后这次连胜也计入统计
  4. 平均连胜长度 = 总连胜长度 / 总连胜次数(注意判断总连胜次数为0的边界情况,避免除0报错)

完整代码示例

# 示例输入
start_capital = 100
series = [102,104,106,105,108,109,120,115,116,118,120,122]

# 初始化统计变量
win_streak_count = 0
total_win_length = 0
current_streak = 0

# 遍历序列对比相邻值
for i in range(len(series)):
    # 第一局单独和初始资本对比
    if i == 0:
        if series[i] > start_capital:
            current_streak += 1
        continue
    # 从第二局开始和前一局的资本对比
    if series[i] > series[i-1]:
        current_streak += 1
    else:
        # 连胜中断,统计之前的连胜
        if current_streak > 0:
            win_streak_count += 1
            total_win_length += current_streak
            current_streak = 0

# 遍历结束后检查末尾是否有未统计的连胜
if current_streak > 0:
    win_streak_count += 1
    total_win_length += current_streak

# 计算平均连胜长度
if win_streak_count > 0:
    avg_win_length = total_win_length / win_streak_count
else:
    avg_win_length = 0

# 输出结果
print(f"总赢连胜次数:{win_streak_count}")
print(f"平均赢连胜长度:{avg_win_length}")

示例运行结果

拿你给出的示例序列运行,输出如下:

总赢连胜次数:3
平均赢连胜长度:3.3333333333333335
和你给出的首段连胜长度为3的示例匹配,三段连胜分别是[102,104,106](长度3)、[108,109,120](长度3)、[116,118,120,122](长度4)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:57:04