import collections
card = collections.namedtuple(
'card',[
'rank'
,'suit'])
class
frenchdeck
: ranks =
[str
(s)for s in
range(2
,11)]
+list
('jqka'
) suits =
'spades diamonds clubs hearts'
.split(
)def
__init__
(self)
: self._cards =
[card(rank, suit)
for rank in self.ranks
for suit in self.suits]
def__len__
(self)
:return
len(self._cards)
def__getitem__
(self, position)
:return self._cards[position]
python直譯器碰到特殊的句法時,會使用特殊方法去啟用一些基本的物件操作,這些特殊方法的名字以兩個下劃線開頭
len用這種特殊方法 在呼叫時就可以直接用len(card)來得到元素的和
getitem實現迭代
cards = frenchdeck(
)len
(cards)
for card in cards:
print
(card)
cards[
0]
加上這兩個函式就可以實現上述型別用法 方便
撲克排序
dect = frenchdeck(
)suit_values =
dict
(spades=
3, hearts=
2, diamonds=
1, clubs=0)
defspades_high
(card)
: rank_value = frenchdeck.ranks.index(card.rank)
return rank_value *
len(suit_values)
+ suit_values[card.suit]
for card in
sorted
(dect, key=spades_high)
:print
(card)
這裡我看了半天,這書真的對新手不友好
幾段**短小精悍,翻了幾篇文件才弄懂,看來我的學習之路還長得很
流暢的python 《流暢的python》第一天
我們看到 python 可以用len 或者arr 0 它們是怎麼實現的,其實就是兩個魔法方法 len 和 getitem 用撲克牌的例子學習一下,我們知道知道撲克牌有花色 黑桃,紅桃,方塊,梅花 有大小 2 10 jqka 如何創造一套牌的物件呢?首先學習collections的namedtuple...
流暢的python學習1
usr bin env python3 coding utf 8 created on mon apr 20 21 08 08 2020 author root import collections card collections.namedtuple card rank suit class f...
學習《流暢的Python學習》 筆記02
1.2.2 字串表示形式 python 有乙個內建的函式叫 repr,它能把乙個物件用字串的形式表 達出來以便辨認,這就是 字串表示形式 repr 就是通過repr這個特殊方法來得到乙個物件的字串表示形式的。如果沒有實現repr,當我們在控制台裡列印乙個向量的例項時,得到的字串 可能會是 互動式控制...