首页 > 解决方案 > 用一组元组制作扑克游戏

问题描述

首先,我必须Hands = Set[Tuple[str,str]]分别表示卡片的花色和等级( Hands = {("Diamonds", "4"),("Clubs","J"),...})。然后我必须检查是否Hands包含同花顺组合(所有 5 张牌依次具有相同的花色。)我尝试使用 for 循环来检查所有牌的花色是否相同,但问题是我无法分割集合内的元素. 在那之后我很难过。有没有办法返回一个指示变量是否Hands是同花顺的布尔值?

这是我一直在处理的代码

Hands = Set[Tuple[str,str]]
h = {("Diamonds", "Q"),("Diamonds","J"),("Diamonds","K"),("Diamonds","A"),("Diamonds","2")}

def is_sflush(h:Hands) -> bool:
    for i in h:
    if h[i][0] == h[i+1][0]: #This is where I am wrong and need help here

标签: python-3.x

解决方案


这听起来像是硬件问题,所以不要放弃农场......

你有 2 个检查要弄清楚:相同的西装和顺序。分开做。

对于“相同的套装”,我建议从卡片(而不是等级)中制作一套set套装你可以从一组理解中做到这一点。该集合的大小会告诉你什么?

顺序部分需要做更多的工作。:) 您可能需要一个额外的数据结构,该结构具有正确的卡片顺序或位置作为比较的东西。有几种策略可以奏效。


推荐阅读