Python开发扑克游戏时如何获取顺子序列的最大数值
Python扑克游戏顺子最大值获取方法
实现逻辑
因为你已经完成了顺子存在性的判定,只需要从去重排序后的手牌倒序查找第一个符合连续5张数值递增1的序列,末尾值即为该顺子的最大数值,会自动跳过不属于顺子的大数值牌。
代码实现
def get_straight_max(hand): # 对手牌去重后升序排序 sorted_unique = sorted(set(hand)) # 从最大的牌开始倒序查找符合条件的顺子 for i in range(len(sorted_unique) - 1, 3, -1): # 连续5张牌的首尾差为4即说明是顺子 if sorted_unique[i] - sorted_unique[i - 4] == 4: return sorted_unique[i] # 可选:兼容A(数值14)当1的特殊顺子A-2-3-4-5,最大值计为5 if set(sorted_unique) >= {14, 2, 3, 4, 5}: return 5
效果测试
以你给出的手牌为例:
playershand = (3, 6, 7, 8, 9, 10, 12) print(get_straight_max(playershand))
运行后输出为10,符合需求。
逻辑说明
- 去重操作是为了避免同数值多牌干扰连续序列判定
- 倒序查找保证优先取到数值最大的顺子,自动过滤不属于顺子的大数值牌(比如示例中的12)
- 可选兼容逻辑适配扑克规则中A可作低牌使用的场景,不需要可直接删除
内容的提问来源于stack exchange,提问作者CompleteNewb
相关产品推荐
相关产品推荐

