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

如何简化Python石头剪刀布游戏的胜负判断代码?

简化石头剪刀布胜负判断的几种方案

方法一:字典映射克制关系

通过字典直接定义每个选择的克制对象,代码简洁且逻辑直观:

def check_results(ai, self):
    if ai == self:
        return 'tralf'
    # 键:玩家选择,值:该选择能击败的AI选项
    beats = {
        'rock': 'scissors',
        'paper': 'rock',
        'scissors': 'paper'
    }
    # 玩家能击败AI则返回True,否则返回False
    return beats[self] == ai

这种方式把所有胜负规则集中在字典中,后续如果需要调整规则(比如扩展游戏选项),只需修改字典即可,无需改动条件判断逻辑。

方法二:索引模运算判断

将选项存入列表,利用索引的模3运算来推导胜负,避免硬编码多分支条件:

def check_results(ai, self):
    choices = ['rock', 'paper', 'scissors']
    player_idx = choices.index(self)
    ai_idx = choices.index(ai)
    
    if player_idx == ai_idx:
        return 'tralf'
    # 模3运算判断胜负:玩家索引相对AI索引偏移1时获胜
    return (player_idx - ai_idx) % 3 == 1

逻辑说明:

  • 列表choices定义了选项的顺序,每个选项对应唯一索引
  • 平局时两者索引相等,直接返回'tralf'
  • 当(player_idx - ai_idx) % 3 == 1时,玩家获胜:
    • 石头(0)击败剪刀(2):(0-2) %3 =1
    • 布(1)击败石头(0):(1-0) %3=1
    • 剪刀(2)击败布(1):(2-1) %3=1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:40:31