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

俄罗斯轮盘赌函数优化:添加次数追踪与输出统计功能

俄罗斯轮盘赌游戏功能升级实现

针对你的需求,我对原有代码进行了修改,实现了函数运行次数追踪和输出数据统计两个功能,具体实现如下:

功能1:追踪函数运行次数,150次后卡壳

通过全局变量记录游戏运行的总次数,每次调用游戏函数时先检查次数,达到150次后直接触发卡壳逻辑,终止游戏。

功能2:追踪输出数据,统计各数字出现频率

用全局字典记录每个弹仓数字被触发的次数,游戏过程中每次触发弹仓都更新统计数据,后续可直接基于该字典制作频率图表。

完整修改后代码

import random

# 全局变量:追踪游戏运行总次数
game_runs = 0
# 全局变量:统计各弹仓数字的触发频率
chamber_stats = {"1": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0}

def russianRoullete():
    global game_runs, chamber_stats
    game_runs += 1
    
    # 150次后触发卡壳逻辑
    if game_runs > 150:
        print("咔哒!枪卡壳了,无法继续游戏。")
        return
    
    # 每局游戏重新初始化弹仓并洗牌
    myList = ["1", "2", "3", "4", "5", "6"]
    random.shuffle(myList)
    trigPull = 0
    
    while trigPull < 6:
        input("Press enter to pull the trigger")
        # 随机选取未触发的弹仓
        shoot1 = random.randrange(len(myList))
        shoot2 = myList.pop(shoot1)
        
        # 更新弹仓触发统计
        chamber_stats[shoot2] += 1
        
        print(f"You pulled the trigger on chamber {shoot2}")
        trigPull += 1
        
        if shoot2 == "6":
            print("BANG! Game over.")
            break
        else:
            print("Click... You survived this time.")

# 示例:调用160次游戏,验证卡壳逻辑
for _ in range(160):
    russianRoullete()

# 输出统计结果,用于制作图表
print("\n各弹仓触发频率统计:")
total_triggers = sum(chamber_stats.values())
for chamber, count in chamber_stats.items():
    print(f"弹仓{chamber}:{count}次,频率:{count / total_triggers:.2%}")

关键改动说明

  • 全局变量持久化:game_runs记录总运行次数,chamber_stats存储各数字触发计数,确保跨函数调用的数据不丢失。
  • 弹仓状态重置:将弹仓列表的初始化移至函数内部,保证每局游戏都是全新的弹仓状态,避免之前的列表被清空导致无法继续。
  • 卡壳触发逻辑:每次调用函数先判断运行次数,超过150次直接输出卡壳信息并终止当前局。
  • 实时统计更新:每次触发弹仓后立即更新统计字典,最终可直接导出该数据制作可视化图表(如柱状图、饼图)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:14:10