开发双硬币同时抛掷模拟计分程序的技术需求问询
硬币抛掷模拟程序开发指南
核心需求
我需要开发一款模拟同时抛掷两枚硬币的程序,核心目标是按照特定规则统计得分,并且支持自定义游戏局数和每局抛掷次数。
计分规则
- 两枚均为正面(heads):A组得1分
- 两枚均为反面(tails):B组得1分
- 结果不同(一正一反):教授(Prof)得1分
输入要求
程序需要接收两个用户输入:
- 游戏局数:控制总共运行多少轮独立的游戏
- 每局抛掷次数:控制单轮游戏中,两枚硬币被同时抛掷的次数
示例运行效果
示例1:
How many games? 1
How many coin tosses per game? 100
Game 0: Group A: 25 (25.0%); Group B: 19 (19.0%); Prof: 56 (56.0%)
Wins: Group A=0 (0.0%); Group B=0 (0.0%); Prof=1 (100.0%)
Python实现方案
下面是一个完全符合需求的Python代码实现,包含输入处理、随机模拟、计分统计和结果输出的完整逻辑:
import random def toss_two_coins(): # 用1表示正面(heads),0表示反面(tails),返回两枚硬币的结果 return random.randint(0, 1), random.randint(0, 1) def count_scores(tosses_per_game): group_a = 0 group_b = 0 prof = 0 for _ in range(tosses_per_game): c1, c2 = toss_two_coins() if c1 == c2 == 1: group_a += 1 elif c1 == c2 == 0: group_b += 1 else: prof += 1 return group_a, group_b, prof def main(): # 获取用户输入,包含简单的错误处理 try: num_games = int(input("How many games? ")) tosses_per_game = int(input("How many coin tosses per game? ")) except ValueError: print("请输入有效的整数!") return # 初始化获胜统计 a_wins = 0 b_wins = 0 prof_wins = 0 # 逐局运行游戏 for game_idx in range(num_games): a, b, p = count_scores(tosses_per_game) # 计算得分百分比 a_pct = (a / tosses_per_game) * 100 b_pct = (b / tosses_per_game) * 100 p_pct = (p / tosses_per_game) * 100 # 打印单局结果 print(f"Game {game_idx}: Group A: {a} ({a_pct:.1f}%); Group B: {b} ({b_pct:.1f}%); Prof: {p} ({p_pct:.1f}%)") # 判断本局获胜者(处理并列情况,若多人得分相同则均算获胜) max_score = max(a, b, p) if a == max_score: a_wins += 1 if b == max_score: b_wins += 1 if p == max_score: prof_wins += 1 # 计算总获胜百分比 total = num_games if num_games > 0 else 1 a_win_pct = (a_wins / total) * 100 b_win_pct = (b_wins / total) * 100 prof_win_pct = (prof_wins / total) * 100 # 打印最终获胜统计 print(f"Wins: Group A={a_wins} ({a_win_pct:.1f}%); Group B={b_wins} ({b_win_pct:.1f}%); Prof={prof_wins} ({prof_win_pct:.1f}%)") if __name__ == "__main__": main()
代码细节说明
toss_two_coins:模拟一次两枚硬币的随机抛掷,返回两个0/1值代表正反count_scores:根据每局抛掷次数,循环模拟并统计三组的得分main:处理用户输入(包含简单的错误处理),逐局运行游戏,记录每局结果和获胜情况,最后输出汇总数据
内容的提问来源于stack exchange,提问作者setho14
相关产品推荐
相关产品推荐

