日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1-1 一摞有风格的纸牌之一摞

發布時間:2023/12/8 编程问答 84 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1-1 一摞有风格的纸牌之一摞 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面

昨天學習了怎么用namedtuple()方法生成一張紙牌的類。今天繼續學習怎么生成一摞紙牌。

一摞有風格的紙牌之一摞

流暢的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.suits for rank in self.ranks] def __len__(self): return len(self._cards) def __getitem__(self, position): return self._cards[position]

上一節學習了Card類,這一節看一下FrenchDeck中的內容。

ranks是一個列表,在這個列表中,共有13個字符,為2到11和‘JQKA’,這就是列表表達式。

suits是一個代表撲克牌4中花色的列表,這個列表是通過切割字符串得到的。

初始化方法中,對一摞紙牌進行了初始化,并賦值給self._cards,這里為什么要加下劃線呢?意義在哪里?

import collections Card = collections.namedtuple('Card', ['rank', 'suit'])ranks = [str(n) for n in range(2,11)] + list('JQKA') suits = 'spades diamonds clubs hearts'.split() cards = [Card(rank, suit) for suit in suits for rank in ranks] for r, s in cards: print({r: s}) >>> {'2': 'spades'} {'3': 'spades'} {'4': 'spades'} ... {'Q': 'hearts'} {'K': 'hearts'} {'A': 'hearts'}

說明:單下劃線開頭的變量,標明是一個受保護(protected)的變量,原則上不允許直接訪問,但外部類還是可以訪問到這個變量。這只是程序員之間的一個約定,用于警告說明這是一個私有變量,外部類不要去訪問它。

FrenchDeck類中的__len__()方法是一個特殊方法,獲取這摞撲克牌的長度,及統計共有多少張撲克牌。

FrenchDeck類中的__getitem__()方法也是一個特殊方法,用以獲取這摞撲克牌中的一張撲克牌。

思考

  • 怎么獲取這摞撲克牌中的第一張,第10張,最后一張?
  • 怎么隨機獲取一張撲克牌?--需要導入:random.choice
  • 怎么對撲克牌進行切片操作?
  • 怎么對撲克牌進行迭代操作,打印出所有的撲克牌?

寫在后面

學習了這節內容,第一反應是,哇哦~我可以用Python寫出99乘法表了,心動不如行動:

# 99乘法表 from collections import namedtuple Rank = namedtuple('Rank', ['row', 'column'])table = [Rank(row, column) for row in range(1,10) for column in range(1, 10)] print(table) for row, column in table: # print("%d*%d=%2d" % (row, column, row * column), end=' ') print(row * column, end=' ') # OMG 怎么打印出99乘法表的格式呢? if column == 9: print("") >>> 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81

最后的結果如上,但是這不是我想要的啊,我想要的是小時候文具盒上那樣的:

TIPS: 這個故事告訴我們,你以為你會了,其實你還什么都不會。

轉載于:https://www.cnblogs.com/catleer/p/6838870.html

總結

以上是生活随笔為你收集整理的1-1 一摞有风格的纸牌之一摞的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。