回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想用python编写一个hold'em扑克模拟器来学习这门语言(python3.7)。我首先创建了一个Card类,其中包含value(例如5或K)和suit(例如hearts或spades)。一副牌是通过将每一个值与每一套衣服相匹配而产生的:</p>
<pre><code>suits = ["Hearts","Diamonds","Spades","Clubs"]
values = ["2","3","4","5","6","7","8","9","10","11","12","13","14"]
#note that i replaced the values J by 10, Q by 11...to later easier compare them
class Card(object):
value = 0
suit = ""
def __init__(self, value, suit):
self.value = value
self.suit = suit
def create_card(value, suit):
card = Card(value, suit)
return card
deck = []
for i in values:
for j in suits:
deck.append(create_card(i,j))
random.shuffle(deck)
</code></pre>
<p>所以现在我有一个洗牌列表的卡对象,并采取两张牌,并分配给一个球员。然后我再抽5张牌,普通牌:</p>
<pre><code>player1 = []
for i in range(2):
player1.append(deck.pop(0))
commoncards = []
for i in range(5):
commoncards.append(deck.pop(0))
</code></pre>
<p>现在我有两张卡片对象列表,一张是我的玩家的全卡,一张是普通卡。到现在为止,一直都还不错。现在我想确定玩家的手牌(例如一对、两对或三对等),我想一个很好的方法是加入玩家列表和commoncards列表的副本,并按值排序,以检查两个“邻居”元素是否具有相同的值:</p>
<pre><code>commoncardscopy=commoncards.copy()
player1.extend(commoncardscopy)
player1.sort(key=lambda Card : Card.value)
for i in range(len(player1)):
print(player1[i].value)
</code></pre>
<p>这应该打印7个排序的卡片值(例如2,2,4,5,8,8,12),对吗?好吧,它不是。这里有一个输出示例:10
13
13
14
7
7
9个</p>
<p>有人知道为什么吗?感谢您的帮助或反馈:)</p>