python3模擬撲克牌

2022-02-26 22:08:21 字數 2279 閱讀 6275

python3.6環境

import

collections

from random import

choice

card=collections.namedtuple('

card

',['

rank

','suit'])

class

frenchdeck:

ranks=[str(n) for n in range(2,11)] +list('

jqka

') #

撲克的大小範圍

print

(ranks)

suits='

spades diamods clubs hearts

'.split() #

黑桃,鑽石,方塊,紅心

print

(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

') #

例項乙個撲克點

print

(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:

print

(card)

print('

******************************=下面是反響迭代******************************=')

#反向迭代

for card in

reversed(deck):

print

(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...