【发布时间】:2021-06-07 13:11:39
【问题描述】:
我正在尝试对 Python 中的德州扑克游戏的“手”牌对象数组进行排序,其中纸牌对象包含三个值:用于花色的字符串、用于值的字符串/整数和用于它们的整数检查顺子时的“排名”。
class Card:
def __init__(self, suit, val, rank):
self.suit = suit
self.value = val
self.rank = rank
def show(self):
print("{} of {}s".format(self.value, self.suit))
我还为每个玩家开设了一个课程,他们有一个包含两张牌的“口袋”,以及包括口袋和棋盘在内的七张牌。
class Player:
def __init__(self, name):
self.pocket = []
self.hand = []
self.temp = []
为了检查同花顺,我觉得我需要将我的 self.hand 数组按等级排序,这样我就可以轻松地通过花色/等级值来查看那张神奇的手是否存在。因为它是一个如此小的数据集,所以我选择了冒泡排序,我实现了
self.hand.append(Card("Diamond", 5, 5))
self.hand.append(Card("Spade", "Ace", 1))
self.hand.append(Card("Diamond", "Queen", 12))
self.hand.append(Card("Diamond", 10, 10))
self.hand.append(Card("Diamond", "King", 13))
self.hand.append(Card("Diamond", 9, 9))
self.hand.append(Card("Diamond", "Jack", 11))
for x in self.hand:
self.temp.append(x.rank)
n = len(self.temp)
for i in range(n - 1):
for j in range(0, n - i - 1):
if(self.temp[j] > self.temp[j + 1]):
self.hand[j], self.hand[j + 1] = self.hand[j + 1], self.hand[j]
for i in self.hand:
i.show()
这个冒泡排序算法在另一个程序中使用一组整数,但是当我在这里显示手时,它仍然未排序。没有错误消息。知道我哪里错了吗?
【问题讨论】:
-
你没有在手牌列表旁边排序临时列表。
-
为什么首先使用冒泡排序?只需使用
self.hand.sort(key = lamdba x: x.rank)。