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

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_

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:50:54