成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

使用Python制作撲克牌的方法-創(chuàng)新互聯(lián)

使用Python制作撲克牌的方法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供臺江企業(yè)網站建設,專注與成都做網站、成都網站制作、成都外貿網站建設HTML5建站、小程序制作等業(yè)務。10年已為臺江眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網站設計公司優(yōu)惠進行中。

創(chuàng)建一個紙牌類

一副撲克除去大王小王之外,剩下的 52 張紙牌以花色為基準(梅花、方塊、黑桃、紅心)可分為 4 組,每組有 13 張牌組成;因此可創(chuàng)建兩個列表一個來存儲花色,一個存儲 13 個字符;通過兩個列表之間的隨機組合來生成 52 張紙牌,

代碼如下:

使用Python制作撲克牌的方法​

代碼中通過collections.namedtuple模塊創(chuàng)建一個類來表示一幅紙牌,['rank','suit']分別表示紙牌中的字符(2-10,J-A)和花色;

FranchDeck 類來建 52 張紙牌,其中有兩個特殊方法,len() 返回紙牌數(shù)量,__getitem__() 獲取 position(索引) 下的指定紙牌

使用Python制作撲克牌的方法​

隨機抽取一張牌

這里借助 random 模塊實現(xiàn)隨機抽牌的功能

使用Python制作撲克牌的方法​

列表迭代、切片

因為 __getitem__ 方法 把 [] 操作交給 self._cards 列表 ,除了上面提到的 index 定位之外,F(xiàn)ranckDeck() 類還可實現(xiàn)切片、迭代操作;

使用Python制作撲克牌的方法​

排序操作

常規(guī)來說,依據(jù)點數(shù)來判斷撲克牌的大小的話,2最小,A大。實現(xiàn)點數(shù)排序是比較簡單的,在創(chuàng)建點數(shù)列表時是以上面提到順序進行創(chuàng)建,排序時只需按照 點數(shù)所在 index 作為基準進行排序即可,

除了 點數(shù)之外還有一個 花色也需要考慮,對于花色的話,需要建立一個映射基準(也可以稱之為權重),不同花色賦予不同值;Python 的字典類型可以很方面地滿足我們的需要

使用Python制作撲克牌的方法​

代碼解讀:

1,代碼中利用字典加入了一個映射機制,黑桃為3,紅心為2,方塊次之,隨后梅花;2,創(chuàng)建 spades_high 函數(shù)來計算 每張牌的權重總值;3,利用 sorted() 函數(shù) key= spades_high 來作為排序基準,來實現(xiàn)撲克牌排序

洗牌操作

洗牌簡單來說就是對一副撲克牌重新進行無規(guī)則地排序;正常情況random.shuffle 可以很方面地實現(xiàn)這個功能,但前提需要保證對象 滿足可變協(xié)議,這里 FranchDeck() 是不滿足的,直接使用的話會報錯:

使用Python制作撲克牌的方法​

對于上面問題,只需要要把 此類由不變變成可變的即可,創(chuàng)建一個函數(shù)賦值為 __setitem__ 屬性

使用Python制作撲克牌的方法​

這里抽取到打亂前后紙牌的前 5 個元素,已經實現(xiàn)洗牌的功能了!

根據(jù)以上的代碼部分,可以進一步開發(fā), 提前設計好 54 張撲克牌的可視化圖片,

使用Python制作撲克牌的方法​

創(chuàng)建一個 key:value 映射關系,對撲克牌字符與可視化圖片之間創(chuàng)建一個映射關系,如下圖所示,把此關系集存儲到指定數(shù)據(jù)庫或文件中,后面使用后可直接調用

使用Python制作撲克牌的方法

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)-成都網站建設公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

文章標題:使用Python制作撲克牌的方法-創(chuàng)新互聯(lián)
當前鏈接:http://jinyejixie.com/article14/ccegge.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站設計網站設計公司、商城網站、做網站虛擬主機、云服務器

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站托管運營
南丹县| 扎赉特旗| 莒南县| 赤水市| 邯郸县| 东辽县| 陆丰市| 桃源县| 海盐县| 庄河市| 孝义市| 合阳县| 惠州市| 东港市| 通山县| 财经| 益阳市| 新绛县| 新竹市| 武宣县| 桃园市| 枝江市| 望谟县| 霍林郭勒市| 金秀| 龙游县| 利津县| 延庆县| 巴彦县| 和林格尔县| 阜康市| 长白| 盐城市| 义乌市| 大同市| 东乌珠穆沁旗| 祁门县| 沛县| 扶沟县| 虹口区| 柳林县|