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

如何在Python抛硬币模拟器中统计最长连续Heads/Tails streak?

抛硬币模拟器:添加最长连续正反面统计并修复逻辑问题

现有代码存在的问题

  1. 未导入randint函数,运行会触发未定义错误
  2. 重复游玩的逻辑混乱,while循环位置错误,且turn == 0是比较操作而非赋值
  3. 缺少最长连续正面/反面的统计逻辑

修改后的完整代码

from random import randint

def coin_toss():
    heads_count = 0
    tails_count = 0
    # 初始化连续次数统计变量
    current_heads_streak = 0
    max_heads_streak = 0
    current_tails_streak = 0
    max_tails_streak = 0
    
    number_of_flips = int(input('请输入抛硬币次数:'))
    
    for index in range(1, number_of_flips + 1):
        flip = randint(1, 2)
        if flip == 1:
            print(f'第{index}次结果:正面(Heads)')
            heads_count += 1
            # 更新正面连续次数
            current_heads_streak += 1
            current_tails_streak = 0
            # 更新最长正面连续记录
            if current_heads_streak > max_heads_streak:
                max_heads_streak = current_heads_streak
        else:
            print(f'第{index}次结果:反面(Tails)')
            tails_count += 1
            # 更新反面连续次数
            current_tails_streak += 1
            current_heads_streak = 0
            # 更新最长反面连续记录
            if current_tails_streak > max_tails_streak:
                max_tails_streak = current_tails_streak
    
    print('\n')
    print(f'正面次数:{heads_count}')
    print(f'反面次数:{tails_count}')
    print(f'最长连续正面:{max_heads_streak}次')
    print(f'最长连续反面:{max_tails_streak}次')
    print('\n')
    
# 控制重复游玩的逻辑
while True:
    coin_toss()
    replay = input('是否要继续游玩?y/n ')
    if replay.lower() != 'y':
        break

关键修改说明

  • 补充from random import randint:解决随机数函数未定义的问题
  • 变量命名规范化:将原大写变量改为小写(如Heads→heads_count),符合Python代码风格
  • 新增连续次数统计:用两组变量分别跟踪当前连续次数和历史最长连续次数,每次抛硬币时实时更新
  • 重构循环索引:直接通过range生成从1开始的次数编号,去掉冗余的index变量
  • 修复重复游玩逻辑:用while True循环替代原混乱的turn变量逻辑,每次游戏结束后询问用户是否继续,输入非'y'则退出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:20:32