91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Python制作撲克牌的方法

發布時間:2020-10-27 15:27:35 來源:億速云 閱讀:330 作者:Leah 欄目:開發技術

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

創建一個紙牌類

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

代碼如下:

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

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

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

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

隨機抽取一張牌

這里借助 random 模塊實現隨機抽牌的功能

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

列表迭代、切片

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

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

排序操作

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

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

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

代碼解讀:

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

洗牌操作

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

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

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

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

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

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

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

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

使用Python制作撲克牌的方法

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嵊州市| 古交市| 海林市| 博客| 深泽县| 湟中县| 三台县| 秭归县| 额济纳旗| 静海县| 凤阳县| 波密县| 桦南县| 湖北省| 云南省| 嘉善县| 弥勒县| 横峰县| 木兰县| 卓资县| 黎川县| 枞阳县| 宜兴市| 蒙城县| 多伦县| 休宁县| 裕民县| 米脂县| 东安县| 铁力市| 元朗区| 达州市| 广丰县| 于田县| 成都市| 偏关县| 壤塘县| 赞皇县| 延吉市| 大同县| 集贤县|