我基本上是在用python编写的扑克游戏中识别直牌。所以如果是10,我需要一个可以消掉10以上牌的函数,比如q。我已经写了我的代码来识别一系列数字中的直线,它为一个直线变量返回True值,但我不知道如何识别直线中最大的数字,而不知道这个数字。因为如果12代表女王:
playerhand = (3,6,7,8,9,10,12)
我使用sort()对列表进行排序,但playerhand[6]或max(playerhand)给我12,但我想要10,而不知道10在哪里,也不知道我想要10(因为我想要任何可能的最高数字???
你可以用玩家的手牌创建一个牌组,并找出牌组中直牌最高的牌(不需要排序)。
playersHand = (3, 6, 7, 8, 9, 10, 12)
handSet = set(playersHand)
maxStraight = max(handSet.issuperset(range(n,n+5))*(n+4) for n in handSet)
print(maxStraight) # 10
像这样的东西可能对您有用:
hand = [15,3,6,7,8,9,10,11,12,13]
i=-1
hand.sort()
while hand[i] > 10:
i -= 1
print(hand[i])
负列表索引从列表末尾开始计数,所以如果你有一个条件,比如必须小于10,你可以向后数,直到找到你要找的。
如果你想这样做,你首先需要从列表中删除所有大于10的元素,例如:
players_hand = [3, 6, 7, 8, 9, 10, 11]
players_hand_reduced = [x for x in players_hand if x <= 10]
我同意这个评论。q高的直牌绝对胜过10高的。