【python进阶】__getitem__用法

女爷i 2022-03-24 15:08 466阅读 0赞
  1. import collections
  2. from random import choice
  3. Card = collections.namedtuple('Card', ['rank', 'suit']) #定义类型card,有rank和card两种属性
  4. class FrenchDeck:
  5. ranks = [str(n) for n in range(2, 11)] + list('JQKA')
  6. suits = 'spades diamonds clubs hearts'.split()
  7. def __init__(self):
  8. self.cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks]
  9. def __len__(self):
  10. return len(self.cards)
  11. def __getitem__(self, position):
  12. return self.cards[position]
  13. beer_card = Card('7', 'diamond')
  14. print(beer_card)
  15. french = FrenchDeck()
  16. print(french.cards)
  17. print(len(french))
  18. print(french[0])
  19. print(french[-1])
  20. print(choice(french))
  21. print(choice(french))
  22. #排序
  23. suit_valus = dict(spades = 3, hearts = 2, diamonds = 1, clubs = 0)
  24. def spades_high(card): #排序函数,定义key,使得从低到高排序
  25. rank_value = french.ranks.index(card.rank)
  26. return rank_value * 4 + suit_valus[card.suit]
  27. for card in sorted(french, key=spades_high):
  28. print(card)

最后将纸牌进行了排序
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,466人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringBoot3

    一、简介 在这篇内容中再来看看进阶功能的用法; 主要涉及如下几个功能点: 调度任务:在应用中提供一定的轻量级的调度能力,比如方法按指定的定时规则执行,或者异步执行,从