洗牌游戏:利用list和字典实现对52张扑克牌洗牌,并且输出随机洗牌的结果
已知扑克牌的花色以及牌码(不包括大小鬼)
根据我们已知的扑克牌,现在需要我们利用所学的python知识点,实现扑克牌的重洗,已知扑克牌如下:
'红桃':['A',2,3,4,5,6,7,8,9,10,'J','Q','K']
'黑桃':['A',2,3,4,5,6,7,8,9,10,'J','Q','K']
'梅花':['A',2,3,4,5,6,7,8,9,10,'J','Q','K']
'方块':['A',2,3,4,5,6,7,8,9,10,'J','Q','K']
python列表的基本用法(简介):
1、列表是最常用的python数据类型,它可以作为一个方括号内的逗号分隔值出现;
2、列表里的数据项可以不需要具有相同的类型,如下图中所示;
3、列表中的每一项都对应一个索引,第一项的索引为1,第二项的索引为2,……以此类推;
4、列表的索引可以用来进行截取、组合等;
5、可以通过索引去访问列表中的值,例如:
lista[1] = 2
6、也可以通过索引对列表中的值进行截取;
7、也可以通过索引直接对列表中的值进行修改;
实现洗牌的基本思路
针对洗牌,本文用的是random.sample函数,一共有52张扑克牌,从花色和牌号中,每次随机抽取四种花色,抽取13次,每次随机抽取13个牌码,取四次,这样就形成了52张不规则的花色,利用random.sample随机抽取获得的最终值,每次都可以输出不一样的不同的值。
生成带有52种花色的列表1和带有52个牌码元素的列表2,将列表1和列表2按照索引一 一对应,一 一组合,最后形成一个全新的列表,新列表即为全新的排序,输出为洗牌后的结果。
详细的代码
import random #导入random模块
list_color = ['红桃','黑桃','梅花','方片']
list = []
allcolor = []
for i in range(13): #随机抽取,52种颜色
color1 = random.sample(list_color,4)
allcolor += color1
pass
print(allcolor)
list_num = ['A',2,3,4,5,6,7,8,9,10,'J','Q','K']
allnum = []
for i in range(4): #随机抽取,52张牌码
num1 = random.sample(list_num,13)
allnum += num1
pass
print(allnum)
for i in range(52): #组合52张牌
list.append(allcolor[i]+str(allnum[i]))
pass
print(list)
运行结果示例
运行结果示例:
[‘黑桃’, ‘方片’, ‘梅花’, ‘红桃’, ‘红桃’, ‘方片’, ‘黑桃’, ‘梅花’, ‘方片’, ‘红桃’, ‘梅花’, ‘黑桃’, ‘红桃’, ‘黑桃’, ‘梅花’, ‘方片’, ‘梅花’, ‘黑桃’, ‘红桃’, ‘方片’, ‘梅花’, ‘红桃’, ‘方片’, ‘黑桃’, ‘黑桃’, ‘红桃’, ‘梅花’, ‘方片’, ‘梅花’, ‘黑桃’, ‘方片’, ‘红桃’, ‘方片’, ‘黑桃’, ‘梅花’, ‘红桃’, ‘梅花’, ‘黑桃’, ‘方片’, ‘红桃’, ‘黑桃’, ‘梅花’, ‘方片’, ‘红桃’, ‘红桃’, ‘梅花’, ‘方片’, ‘黑桃’, ‘红桃’, ‘梅花’, ‘方片’, ‘黑桃’]
[6, 9, ‘K’, ‘J’, 3, 8, ‘A’, 5, 2, 10, 7, ‘Q’, 4, 6, 4, ‘J’, 2, 3, ‘A’, ‘K’, 9, 5, ‘Q’, 10, 7, 8, 3, 10, 8, ‘J’, ‘Q’, 9, 4, 5, 7, 6, ‘K’, 2, ‘A’, ‘J’, 3, 9, 8, 6, 5, 7, ‘Q’, ‘A’, 2, ‘K’, 4, 10]
[‘黑桃6’, ‘方片9’, ‘梅花K’, ‘红桃J’, ‘红桃3’, ‘方片8’, ‘黑桃A’, ‘梅花5’, ‘方片2’, ‘红桃10’, ‘梅花7’, ‘黑桃Q’, ‘红桃4’, ‘黑桃6’, ‘梅花4’, ‘方片J’, ‘梅花2’, ‘黑桃3’, ‘红桃A’, ‘方片K’, ‘梅花9’, ‘红桃5’, ‘方片Q’, ‘黑桃10’, ‘黑桃7’, ‘红桃8’, ‘梅花3’, ‘方片10’, ‘梅花8’, ‘黑桃J’, ‘方片Q’, ‘红桃9’, ‘方片4’, ‘黑桃5’, ‘梅花7’, ‘红桃6’, ‘梅花K’, ‘黑桃2’, ‘方片A’, ‘红桃J’, ‘黑桃3’, ‘梅花9’, ‘方片8’, ‘红桃6’, ‘红桃5’, ‘梅花7’, ‘方片Q’, ‘黑桃A’, ‘红桃2’, ‘梅花K’, ‘方片4’, ‘黑桃10’]
运行截图
注:由于是随机抽取,所以每次运行后的结果都不同,以达到洗牌的效果