1.紙牌**實現
importcollections
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 importchoice
(choice(deck))
(choice(deck))
print(choice(deck))
deck類還支援切片
print(deck[:3])print(deck[12:13])
這一摞牌還是可迭代的
for card indeck:
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....