《Fluent Python 2》中关于扑克牌的哪些讨论让你印象深刻?

2026-05-25 18:161阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计574个文字,预计阅读时间需要3分钟。

《Fluent Python 2》中关于扑克牌的哪些讨论让你印象深刻?

一、说明参考资料为《基础百科学》中的Playing Card词条,非严谨性理论认证,仅对代码为何如此编写进行讨论。

二、代码分析

1.代码使用Python语言,引入了collections模块中的namedtuple功能。

2.定义了一个名为Card的namedtuple,包含两个属性:rank(花色)和suit(点数)。

《Fluent Python 2》中关于扑克牌的哪些讨论让你印象深刻?

3.类名为Fre,可能是对Card的进一步封装或扩展。

具体代码如下:

python

import collections

Card=collections.namedtuple('Card', ['rank', 'suit'])

class Fre: pass

一、说明

参考资料为维基百科的 Playing Card 词条,非严肃性论证,只是对代码为什么这么写做讨论。

二、扑克牌的起源

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]

类名为“FrenchDeck”——看书的时候还好奇为什么使用“French”呢,难道扑克牌是法国人发明的?根据维基百科的解释: The most common type of playing card is that found in the French-suited,standard 52-card deck. 即最常见的纸牌类型是法国式的标准52张纸牌(注:代码里没包括“鬼牌”)。

三、花色顺序

suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0) def spades_high(card): rank_value = FrenchDeck.ranks.index(card.rank) return rank_value * len(suit_values) + suit_values[card.suit]

花色顺序为:spades(黑桃) > hearts(红桃) > diamonds(方块) > clubs(梅花)(注:可以按首字母顺序进行记忆:s > h > d > c)。(注:花色的名称和顺序在不同的地方稍有不同,在我自己的家乡是:spades(大花) > hearts(马屁) > clubs(梅花) > diamonds(尖肝))

四、beer card

>>> beer_card = Card('7', 'diamonds') >>> beer_card Card(rank='7', suit='diamonds')

看到 "beer_card" 的时候,也是好奇为啥用 "beer" 呢?参考维基百科 Beer card 词条,beer card 是对方块7的非正式称呼,至于游戏怎么玩,我不是很懂,这里不赘述。

本文共计574个文字,预计阅读时间需要3分钟。

《Fluent Python 2》中关于扑克牌的哪些讨论让你印象深刻?

一、说明参考资料为《基础百科学》中的Playing Card词条,非严谨性理论认证,仅对代码为何如此编写进行讨论。

二、代码分析

1.代码使用Python语言,引入了collections模块中的namedtuple功能。

2.定义了一个名为Card的namedtuple,包含两个属性:rank(花色)和suit(点数)。

《Fluent Python 2》中关于扑克牌的哪些讨论让你印象深刻?

3.类名为Fre,可能是对Card的进一步封装或扩展。

具体代码如下:

python

import collections

Card=collections.namedtuple('Card', ['rank', 'suit'])

class Fre: pass

一、说明

参考资料为维基百科的 Playing Card 词条,非严肃性论证,只是对代码为什么这么写做讨论。

二、扑克牌的起源

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]

类名为“FrenchDeck”——看书的时候还好奇为什么使用“French”呢,难道扑克牌是法国人发明的?根据维基百科的解释: The most common type of playing card is that found in the French-suited,standard 52-card deck. 即最常见的纸牌类型是法国式的标准52张纸牌(注:代码里没包括“鬼牌”)。

三、花色顺序

suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0) def spades_high(card): rank_value = FrenchDeck.ranks.index(card.rank) return rank_value * len(suit_values) + suit_values[card.suit]

花色顺序为:spades(黑桃) > hearts(红桃) > diamonds(方块) > clubs(梅花)(注:可以按首字母顺序进行记忆:s > h > d > c)。(注:花色的名称和顺序在不同的地方稍有不同,在我自己的家乡是:spades(大花) > hearts(马屁) > clubs(梅花) > diamonds(尖肝))

四、beer card

>>> beer_card = Card('7', 'diamonds') >>> beer_card Card(rank='7', suit='diamonds')

看到 "beer_card" 的时候,也是好奇为啥用 "beer" 呢?参考维基百科 Beer card 词条,beer card 是对方块7的非正式称呼,至于游戏怎么玩,我不是很懂,这里不赘述。