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

如何简化三滚轮老虎机程序中Wild Symbol的代码实现?

三滚轮老虎机代码的简洁优化实现

先提个原代码里的小bug:你把三个20的Jackpot判断放在了一堆Win条件之后,但三个20其实会先触发ri1 == ri2 == ri3的Win判定,导致Jackpot永远不会被触发,得调整优先级。

下面是更简洁易维护的实现:

优化思路

  • 用列表统一管理三个滚轮的结果,避免重复定义变量
  • 把分散的Win条件合并成逻辑清晰的判断,不用写一堆elif
  • 修正Jackpot的判断顺序,确保它能被正确触发

优化后的代码

import random

# 一次性生成三个滚轮结果,用列表存储
wheels = [random.randint(1, 20) for _ in range(3)]
print(*wheels)

# 定义常量,后续改符号值更方便
WILD = 1
JACKPOT_SYMBOL = 20

# 优先判断Jackpot:三个全是20
if all(wheel == JACKPOT_SYMBOL for wheel in wheels):
    print("Jackpot")
else:
    wild_num = wheels.count(WILD)
    # 筛选出非Wild的符号
    non_wild_symbols = [w for w in wheels if w != WILD]
    
    # 合并所有Win条件:
    # 1. 三个符号完全相同(已排除Jackpot)
    # 2. 有至少2个Wild
    # 3. 1个Wild + 另外两个非Wild符号相同
    is_win = (len(set(wheels)) == 1) or (wild_num >= 2) or (wild_num == 1 and len(set(non_wild_symbols)) == 1)
    print("Win" if is_win else "Play Again")

代码说明

  1. 列表生成滚轮结果:用列表推导式替代三个单独的变量定义,代码更简洁,后续要调整滚轮数量也只需要改range(3)里的数字。
  2. 常量定义:把Wild和Jackpot的符号值定义成常量,以后如果要把Wild改成5,直接改WILD = 5就行,不用在代码里找所有的1。
  3. Jackpot判断:用all()函数检查所有滚轮是否都是20,放在最前面确保不会被Win条件覆盖。
  4. Win条件合并:把原代码里的7个Win相关条件合并成三个逻辑分支,一眼就能看明白获胜规则,后续要修改规则也更容易调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:54:32