当前位置: 首页 > news >正文

一摞python风格的纸牌

一摞python风格的纸牌

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.suitsfor rank in self.ranks]def __len__(self):return len(self._cards)def __getitem__(self, position):return self._cards[position]# 测试代码
if __name__ == "__main__":# 创建一副扑克牌deck = FrenchDeck()# 1. 测试牌组长度print(f"牌组共有 {len(deck)} 张牌")  # 应该输出52张# 2. 测试获取特定位置的牌print("\n测试特定位置的牌:")print(f"第一张牌: {deck[0]}")      # 黑桃2print(f"最后一张牌: {deck[-1]}")   # 红桃Aprint(f"第10张牌: {deck[9]}")      # 黑桃J# 3. 测试切片功能print("\n测试切片功能:")print("前5张牌:", deck[:5])        # 黑桃2到黑桃6print("最后3张牌:", deck[-3:])     # 红桃Q、红桃K、红桃A# 4. 测试迭代功能print("\n测试迭代功能 - 前10张牌:")for card in list(deck)[:10]:print(card)# 5. 测试成员检查print("\n测试成员检查:")print(f"黑桃A在牌组中: {Card('A', 'spades') in deck}")  # Trueprint(f"方片1在牌组中: {Card('1', 'diamonds') in deck}")  # False# 6. 测试随机抽取import randomprint("\n测试随机抽取3张牌:")for _ in range(3):print(random.choice(deck))

以下是代码中单词的翻译:

  • import collections:导入 集合(模块)

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

    • Card:卡牌(类名,此处为专有名词,不翻译)
    • namedtuple:命名元组(Python 中的一种数据类型)
    • rank:点数(指牌的数字或字母大小)
    • suit:花色(指扑克牌的四种花色)
  • class FrenchDeck

    • FrenchDeck:法式扑克牌(指标准52张扑克牌,不翻译)
  • ranks = [str(n) for n in range(2, 11)] + list('JQKA')

    • ranks:点数列表(牌面的数字和字母组合)
    • J:Jack(杰克,扑克牌中的J)
    • Q:Queen(王后,扑克牌中的Q)
    • K:King(国王,扑克牌中的K)
    • A:Ace(幺点,扑克牌中的A)
  • suits = 'spades diamonds clubs hearts'.split()

    • suits:花色列表
    • spades:黑桃
    • diamonds:方块
    • clubs:梅花
    • hearts:红桃
  • def __init__(self):初始化方法(构造方法)

  • self._cards:自身的卡牌列表(_ 表示该属性为内部使用,不建议外部直接访问)

  • def __len__(self):长度方法(用于返回对象的长度)

  • def __getitem__(self, position):获取元素方法(用于通过索引访问对象中的元素)

  • position:位置(指索引位置)

简单来说,这段代码通过 namedtuple 定义了“卡牌”(包含“点数”和“花色”),然后用 FrenchDeck 类创建了一副标准法式扑克牌(包含黑桃、方块、梅花、红桃四种花色,以及2-10、J、Q、K、A等点数),并实现了获取牌组长度和通过索引访问卡牌的功能。

http://www.hskmm.com/?act=detail&tid=26394

相关文章:

  • 记录一个ubuntu24.04蓝牙不显示不可用的解决方案
  • AI时代需要重新定义投资回报评估模型
  • MOVEit网络攻击波及普华永道与安永,供应链安全再响警钟
  • shell编程
  • Penchick Online Mathematical Olympiad, Qualifying Test 1, III.4
  • QBXT2025S刷题 Day6
  • CF2145 Educational Codeforces Round 183 (Rated for Div. 2) 游记
  • 52个AI工具
  • 可观测专题【左扬精讲】——《Go 语言实现企业级 APM 监控系统实战:从 0 到 1 搭建高性能监控平台》
  • 多区域多 VLAN 网络搭建与访问控制及服务器部署实验
  • Tina_Linux_系统软件 开发指南
  • 2025方钢、扁钢、圆钢、光轴、六角钢、异型钢、冷拉/冷拔方钢、冷拉/冷拔扁钢、冷拉/冷拔圆钢、冷拉/冷拔六角钢、冷拉/冷拔异型钢、热轧方钢/扁钢厂家权威推荐榜:坚固耐用与精准定制口碑之选
  • GO_基础2
  • LDO(一)FVF型LDO
  • 详细介绍:进阶智能体实战九、图文需求分析助手(ChatGpt多模态版)(帮你生成 模块划分+页面+表设计、状态机、工作流、ER模型)
  • 09. 常用控件
  • 201007
  • 苍穹外卖第一天(Maven、Git、Nginx反向代理)
  • Python中的数据结构
  • 2025家纺摄影公司/南通摄影公司权威推荐榜:创意拍摄与专业服务的口碑之选
  • 合成数据生成技术研讨会深度解析
  • 纯 C++ 开发的 Telegram Bot 框架
  • 六级自测
  • Python 中的链式操作——重点讲解链式调用
  • io设备概述
  • 多元线性回归-梯度下降法-吴恩达机器学习
  • 概率论小测试
  • AI 产品研发的一些思考
  • 3.模块化与MVVM设计模式
  • 2025舒适轮胎厂家、静音轮胎厂家企业品牌权威推荐榜:静音技术与驾乘体验口碑之选