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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

用python实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例)

發(fā)布時(shí)間:2024/3/13 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用python实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、namedtuple:命名元組,可以創(chuàng)建一個(gè)沒有方法只有屬性的類

from collections import namedtuple card = namedtuple('card',['rank','suit']) # rank 牌面大小,suit牌面的花色 # card其實(shí)就是namedtuple創(chuàng)建的一個(gè)類,其屬性就是rank和suit c1 = card(2,'紅心 ') # c1是實(shí)例化的對(duì)象 print(c1) print(c1.suit)

運(yùn)行結(jié)果:

card(rank=2, suit='紅心 ') 紅心2

2、按照循環(huán)順序,通過對(duì)象[索引]任意取牌

''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' from collections import namedtuple Card = namedtuple('Card',['rank','suit']) # rank 牌面大小,suit牌面的花色 class FranchDeck:ranks = [str(n) for n in range(2,11)]+list('JQKA')suits = ['紅心','方板','梅花','黑桃']def __init__(self):self._cards = [Card(rank,suit) for rank in FranchDeck.ranks for suit in FranchDeck.suits]# 嵌套循環(huán),每循環(huán)一次都拿到一張牌,并且都會(huì)存到一個(gè)列表中,這個(gè)里面的牌是按照循環(huán)的順序的def __getitem__(self, item):return self._cards[item]deck = FranchDeck() print(deck[10]) # 出現(xiàn)對(duì)象加索引的的取法就是觸發(fā)__getitem__方法

運(yùn)行結(jié)果:

Card(rank='4', suit='梅花')Process finished with exit code 0

3、choice實(shí)現(xiàn)隨機(jī)抽取一張紙牌的過程

from collections import namedtuple Card = namedtuple('Card',['rank','suit']) # rank 牌面大小,suit牌面的花色 class FranchDeck:ranks = [str(n) for n in range(2,11)]+list('JQKA')suits = ['紅心','方板','梅花','黑桃']def __init__(self):self._cards = [Card(rank,suit) for rank in FranchDeck.ranks for suit in FranchDeck.suits]# 嵌套循環(huán),每循環(huán)一次都拿到一張牌,并且都會(huì)存到一個(gè)列表中,這個(gè)里面的牌是按照循環(huán)的順序的def __getitem__(self, item):return self._cards[item]def __len__(self):return len(self._cards)# 實(shí)現(xiàn)按照循環(huán)循序抽取對(duì)應(yīng)的紙牌 deck = FranchDeck() print(deck[10]) # 出現(xiàn)對(duì)象加索引的的取法就是觸發(fā)__getitem__方法# 實(shí)現(xiàn)隨機(jī)抽取一張牌的過程 from random import choice print(choice(deck)) # 注意:# choice能夠?qū)崿F(xiàn)隨機(jī)抽取紙牌,必須得依賴__len__方法,如果前面沒有定義__len__方法就會(huì)報(bào)錯(cuò), # 即只要用到choice就會(huì)觸發(fā)__len__方法

運(yùn)行結(jié)果:

Card(rank='A', suit='梅花')Process finished with exit code 0

4、shuffle實(shí)現(xiàn)隨機(jī)洗牌的過程

''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' from collections import namedtuple Card = namedtuple('Card',['rank','suit']) # rank 牌面大小,suit牌面的花色 class FranchDeck:ranks = [str(n) for n in range(2,11)]+list('JQKA')suits = ['紅心','方板','梅花','黑桃']def __init__(self):self._cards = [Card(rank,suit) for rank in FranchDeck.ranks for suit in FranchDeck.suits]# 嵌套循環(huán),每循環(huán)一次都拿到一張牌,并且都會(huì)存到一個(gè)列表中,這個(gè)里面的牌是按照循環(huán)的順序的def __getitem__(self, item):return self._cards[item]def __len__(self):return len(self._cards) # 傳紙牌的長(zhǎng)度,是從這么多張紙牌里面抽取def __setitem__(self, key, value): self._cards[key] = valuedeck = FranchDeck() print(deck[10]) # 通過shuffle和__setitem__實(shí)現(xiàn)隨機(jī)洗牌的過程,如果前面沒有定義__setitem__方法同樣會(huì)報(bào)錯(cuò) # 因?yàn)殡S機(jī)洗牌的過程索引對(duì)應(yīng)的牌就會(huì)發(fā)生改變,所以只能通過__setitem__去改變from random import shuffle shuffle(deck) print(deck[10])

運(yùn)行結(jié)果:

Card(rank='4', suit='梅花') Card(rank='K', suit='紅心')

總結(jié):

以上紙牌游戲?qū)崿F(xiàn)隨機(jī)抽牌,洗牌的過程,僅僅只是用了內(nèi)置的方法,并沒有用我們自己定 義的方法就實(shí)現(xiàn)了,需要注意的是: __getitem__與對(duì)象[索引],__len__與choice,__setitem__與shuffle

必須同時(shí)結(jié)合使用

內(nèi)置函數(shù),內(nèi)置模塊,內(nèi)置的基礎(chǔ)類型<---->類的內(nèi)置方法,比如:== <--->__eq__,len()<--->__len__

5、總代碼----紙牌游戲隨機(jī)取牌以及洗牌的過程

''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' # 按照循環(huán)順序,通過對(duì)象[索引]任意取牌 # choice實(shí)現(xiàn)隨機(jī)抽取一張紙牌的過程 # shuffle實(shí)現(xiàn)隨機(jī)洗牌的過程 import json from collections import namedtuple Card = namedtuple('Card',['rank','suit']) # rank 牌面大小,suit牌面的花色 class FranchDeck:ranks = [str(n) for n in range(2,11)]+list('JQKA')suits = ['紅心','方板','梅花','黑桃']def __init__(self):self._cards = [Card(rank,suit) for rank in FranchDeck.ranks for suit in FranchDeck.suits]# 嵌套循環(huán),每循環(huán)一次都拿到一張牌,并且都會(huì)存到一個(gè)列表中,這個(gè)里面的牌是按照循環(huán)的順序的def __getitem__(self, item): # 通過對(duì)象[索引]進(jìn)行觸發(fā)return self._cards[item]def __len__(self): # 通過choice進(jìn)行觸發(fā)return len(self._cards) # 傳紙牌的長(zhǎng)度,是從這么多張紙牌里面抽取def __setitem__(self, key, value): # 通過shuffle進(jìn)行觸發(fā)self._cards[key] = valuedef __str__(self):return json.dumps(self._cards,ensure_ascii=False) # 序列化deck = FranchDeck()# 通過對(duì)象[索引]和__getitem__實(shí)現(xiàn)按照循環(huán)循序抽取對(duì)應(yīng)的紙牌 print(deck[10]) # 出現(xiàn)對(duì)象加索引的的取法就是觸發(fā)__getitem__方法# 通過choice和__len__實(shí)現(xiàn)隨機(jī)抽取一張牌的過程 from random import choice print(choice(deck)) # choice能夠?qū)崿F(xiàn)隨機(jī)抽取紙牌,必須得依賴內(nèi)置的__len__方法,如果前面沒有定義__len__方法就會(huì)報(bào)錯(cuò) print(deck[10])# 通過shuffle和__setitem__實(shí)現(xiàn)隨機(jī)洗牌的過程 from random import shuffle shuffle(deck) print(deck[10]) print(deck) # 需要進(jìn)行序列化才可以print(deck[:5]) # 直接利用對(duì)象進(jìn)行切片

運(yùn)行結(jié)果:

Card(rank='4', suit='梅花') Card(rank='A', suit='紅心') Card(rank='4', suit='梅花') Card(rank='A', suit='梅花') [["6", "梅花"], ["9", "梅花"], ["3", "梅花"], ["9", "方板"], ["4", "方板"], ["Q", "紅心"], ["7", "紅心"], ["J", "黑桃"], ["8", "梅花"], ["J", "紅心"], ["A", "梅花"], ["6", "黑桃"], ["Q", "方板"], ["4", "梅花"], ["10", "紅心"], ["A", "紅心"], ["4", "紅心"], ["7", "方板"], ["5", "黑桃"], ["K", "黑桃"], ["2", "方板"], ["Q", "梅花"], ["2", "黑桃"], ["8", "黑桃"], ["J", "梅花"], ["A", "黑桃"], ["2", "紅心"], ["6", "紅心"], ["5", "紅心"], ["J", "方板"], ["10", "方板"], ["K", "方板"], ["K", "紅心"], ["3", "紅心"], ["8", "紅心"], ["8", "方板"], ["5", "方板"], ["K", "梅花"], ["9", "紅心"], ["5", "梅花"], ["7", "黑桃"], ["3", "方板"], ["Q", "黑桃"], ["2", "梅花"], ["7", "梅花"], ["4", "黑桃"], ["9", "黑桃"], ["10", "梅花"], ["6", "方板"], ["3", "黑桃"], ["10", "黑桃"], ["A", "方板"]] [Card(rank='6', suit='梅花'), Card(rank='9', suit='梅花'), Card(rank='3', suit='梅花'), Card(rank='9', suit='方板'), Card(rank='4', suit='方板')]

總結(jié)

以上是生活随笔為你收集整理的用python实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国外精品视频 | 理论片中文字幕 | 女同毛片一区二区三区 | 日本美女动态图 | 中文字幕一区二区三区手机版 | 动漫av一区 | www.自拍| 日本在线不卡一区 | www.黄色免费 | 国产成人97精品免费看片 | 99热这里有精品 | 国产不卡在线 | 九一亚洲精品 | 欧美精品一区二区三区蜜臀 | 啪啪日韩 | 亚洲成人一级 | 69热在线观看 | 伊人福利| 久久成人视屏 | 亚洲最大福利网 | 亚洲精品一区二区三 | 黄色av在| 91私密视频| 久久精品国产一区二区三区 | 在线观看亚洲一区二区 | 人人曰| 免费的av网站| 久久免费黄色 | 国产成人精品一区二区三区无码熬 | 日韩精品极品视频在线观看免费 | 国产盗摄在线观看 | 精品少妇一二三区 | 自拍偷拍亚洲视频 | 色中文网 | 五月天看片 | 中文字幕一区二区三区乱码 | 91精品国产色综合久久不卡粉嫩 | 日韩aa视频 | 国产中文字幕三区 | 亚洲天堂视频网站 | 欧美亚洲国产日韩 | 91日本精品| 糖心vlog精品一区二区 | www.欧美精品 | 久操资源网 | 婷婷狠狠操 | 日韩一二三区在线观看 | 久久综合综合久久 | 亚洲精品国产精品国自产在线 | 在线观看亚洲精品视频 | 亚洲一级二级 | 男女男精品视频网站 | 91社区在线播放 | 国产精品另类 | 午夜精品无码一区二区三区 | 99久久国产免费 | 男女三级视频 | 污视频91| 一区二区三区视频在线 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 国产三级一区二区三区 | 午夜偷拍视频 | 91丝袜美腿 | 依人99| 欧美乱大交 | 国产视频在线一区 | 女人私密又肥又大 | 成人在线观看小视频 | 欧美乱视频 | 免费在线黄色网址 | 欧美日韩三级在线观看 | 精品国产av无码一区二区三区 | 成人精品福利 | 国产亚洲精品美女 | 欧美精品99久久久 | 久久伊人热 | 岛国大片在线免费观看 | 国产麻豆精品视频 | 竹菊影视一区二区三区 | 午夜激情在线播放 | 少妇真实被内射视频三四区 | 成人黄色性视频 | 男人都懂的网址 | 女~淫辱の触手3d动漫 | 日韩女优在线视频 | 精品久久BBBBB精品人妻 | 伊人精品 | 精品乱码一区内射人妻无码 | 五月天视频网 | 日韩图色 | 女攻总攻大胸奶汁(高h) | 在线免费观看视频 | 天天狠天天操 | 狠狠伊人 | 久久乐av| 色欲一区二区三区精品a片 在线观看黄网站 | 美女调教视频 | 日韩精品在线观看一区二区三区 | 爱情岛论坛永久入址测速 |