俄罗斯轮盘赌函数优化:添加次数追踪与输出统计功能
俄罗斯轮盘赌游戏功能升级实现
针对你的需求,我对原有代码进行了修改,实现了函数运行次数追踪和输出数据统计两个功能,具体实现如下:
功能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
相关产品推荐
相关产品推荐

