问题描述
我正在尝试在 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.temp
中的值。只需将其添加到内部循环中即可:
self.temp[j],self.temp[j + 1] = self.temp[j + 1],self.temp[j]
另外,除非你想实现冒泡排序,否则你应该直接使用.sort()
方法,这样会更优化