Python3魔術方法實現一摞卡牌

2022-08-16 19:27:18 字數 1259 閱讀 5304

1.紙牌**實現

import

collections

card = collections.namedtuple('

card

', ['

rank

', '

suit'])

class

frenchdeck:

#紙牌點數

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

jqka')

#紙牌花色

suits = '

spades diamonds clubs hearts

'.split()

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)

frenchdeck這個類和任何標準python集合型別一樣,可以用len()來檢視一疊牌有多少張

deck =frenchdeck()

print(len(deck))

還能通過__getitem__方法抽取特定的牌

print(deck[0], deck[-1])

隨機抽牌

from random import

choice

print

(choice(deck))

print

(choice(deck))

print(choice(deck))

deck類還支援切片

print(deck[:3])

print(deck[12:13])

這一摞牌還是可迭代的

for card in

deck:

print(card)

1 1一摞Python風格的紙牌

參考資料luciano ramalho 流暢的python from collections import namedtuple city namedtuple city name,country,population,coordinates 建立乙個具名元組需要兩個引數,乙個是類名,另乙個是類的各...

程式設計之美1 3 一摞烙餅的排序(Python)

問題 星期五的晚上,一幫同事在希格瑪大廈附近的 硬碟酒吧 多喝了幾杯。程式設計師多喝了幾杯之後談什麼呢?自然是演算法問題。有個同事說 我以前在餐館打工,顧客經常點非常多的烙餅。店裡的餅大小不一,我習慣在到達顧客飯桌前,把一摞餅按照大小次序擺好 小的在上面,大的在下面。由於我乙隻手托著盤子,只好用另乙...

python3 魔術方法之單例模式(四)

class singleclass object instance 0def new cls,args,kwargs if not cls.instance cls.instance object new cls,args,kwargs return cls.instance return cls....