Python猜拳游戏最佳7局制实现问题求助
猜拳游戏7局制优化方案
问题根源
你当前代码里的choice = random.choice(choices)定义在函数外部,程序启动时只会执行一次,所以电脑每轮都用同一个选择。要实现每轮随机,必须把随机选择的逻辑放到游戏函数内部,每次调用函数时重新生成电脑的选择。
修改后的完整代码
import random def single_round(): choices = ["Rock", "Scissors", "Paper"] # 每轮重新生成电脑的选择 computer_pick = random.choice(choices) player_pick = input("Rock, paper or scissors?: ").title() # 处理无效输入 if player_pick not in choices: print("输入无效,请输入Rock、Paper或Scissors") return "invalid" # 判断本轮胜负 if player_pick == computer_pick: print(f"{computer_pick}, Tie!") return "tie" elif (player_pick == "Rock" and computer_pick == "Scissors") or \ (player_pick == "Paper" and computer_pick == "Rock") or \ (player_pick == "Scissors" and computer_pick == "Paper"): print(f"{computer_pick}, you win!") return "player" else: print(f"{computer_pick}, I win!") return "computer" # 初始化分数统计 player_wins = 0 computer_wins = 0 tie_count = 0 # 运行7局游戏 for round_idx in range(7): print(f"\n第 {round_idx + 1} 局") result = single_round() # 根据结果更新分数 if result == "player": player_wins += 1 elif result == "computer": computer_wins += 1 elif result == "tie": tie_count += 1 # 输出最终结果 print("\n=== 7局游戏结束 ===") print(f"玩家获胜: {player_wins} 局") print(f"电脑获胜: {computer_wins} 局") print(f"平局: {tie_count} 局") # 判定最终赢家 if player_wins > computer_wins: print("恭喜你,最终获胜!") elif computer_wins > player_wins: print("电脑最终获胜,再接再厉!") else: print("最终平局,不分胜负!")
关键修改说明
- 将电脑的随机选择移到
single_round函数内部,每轮调用函数时都会重新生成新的选择,解决了重复选同一个的问题 - 拆分单轮逻辑和全局循环,用
single_round函数处理单局游戏并返回结果,外部循环控制7轮并统计分数 - 添加了无效输入处理,避免玩家输入错误导致逻辑异常
- 最后汇总所有局的结果,展示详细比分并判定最终赢家
内容的提问来源于stack exchange,提问作者Pakoo_
相关产品推荐
相关产品推荐

