python3.6環境
importcollections
from random import
choice
card=collections.namedtuple('
card
',['
rank
','suit'])
class
frenchdeck:
ranks=[str(n) for n in range(2,11)] +list('
jqka
') #
撲克的大小範圍
(ranks)
suits='
spades diamods clubs hearts
'.split() #
黑桃,鑽石,方塊,紅心
(suits)
def__init__
(self):
self._cards=[card(rank,suit) for suit in
self.suits
for rank in
self.ranks]
def__len__
(self):
return
len(self._cards)
def__getitem__
(self, position):
return
self._cards[position]
beer_card=card('
7','
diamonds
') #
例項乙個撲克點
(beer_card)
deck= frenchdeck() #
創乙個撲克物件deck
print(len(deck)) #
列印總共有多少張撲克
print(deck[0]) #
列印第一張牌 黑桃2
print(deck[-1]) #
列印最後一張牌 紅心a
print(choice(deck)) #
隨機抽取一張牌
print(deck[:3]) #
檢視最上面三張 黑桃 2 ,3, 4
print(deck[12::13]) #
抽取索引為12的那張牌,然後每隔13張在抽取一張 正好是4個a
#實現了 __getitem__方法,這一摞牌變成了可迭代物件
for card in
deck:
(card)
print('
******************************=下面是反響迭代******************************=')
#反向迭代
for card in
reversed(deck):
(card)
#判斷某張牌例項是否存在這副牌中
print(card('
q','
hearts
') in deck) #
true
print(card('
7','
beasts
') in deck) #
false
#比較撲克牌的大小2 最小、a 最大;同時還要加
#上對花色的判定,黑桃最大、紅桃次之、方塊再次、梅花最小。
#下面就是按照這個規則來給撲克牌排序的函式,梅花 2 的大小是 0,黑桃 a 是 51:
suit_values=dict(spades=3,hearts=2,diamods=1,clubs=0)
defspades_high(card):
# 獲取撲克的點數
rank_value =frenchdeck.ranks.index(card.rank)
# 根據傳入的牌的例項返回撲克0-51 之間的乙個索引 例 黑桃a:12*4+3=51
return rank_value * len(suit_values) +suit_values[card.suit]
#通過上面定義的函式對這幅牌進行 公升序排序
print('
******************************=自定義排序******************************=')
for card in sorted(deck, key=spades_high):
print(card)
撲克牌模擬
題意 東東有 a b 張撲克牌。每張撲克牌有乙個大小 整數,記為a,範圍區間是 0 到 a 1 和乙個花色 整數,記為b,範圍區間是 0 到 b 1 撲克牌是互異的,也就是獨一無二的,也就是說沒有兩張牌大小和花色都相同。一手牌 的意思是你手裡有5張不同的牌,這 5 張牌沒有誰在前誰在後的順序之分,它...
撲克牌排序 tkinter模擬撲克牌和狼人殺發牌
今天我們用tkinter的canvas畫布實現撲克牌的隨機發牌 將54張牌隨機發給四位牌手,在螢幕上顯示每位牌手的牌,利用canvas將發牌結果顯示出來。需要準備的是54張撲克牌的 gif或者png,jpg的話要經過額外的轉換 為了保證最終的牌序是按照由小到大排列的,編號要按照aaaa 2222 k...
模擬分發撲克牌(python實現)
52張撲克牌發個4個玩家,每人13張。要求 自動生成一幅撲克牌組 洗牌 發牌到玩家手中 將玩家手中撲克牌按花色大小整理好。思路一import random import operator defauto pokers poker for i in for j in a 2 3 4 5 6 7 8 9...