Python学习笔记之扑克牌比大小

一、系列缘由

  作为一名运维工程师,也一直有一个学习开发的想法,值此之际,不知道博客的下一期目标在哪里,在这思考和犹豫的间隙想着学习和充实一下自己,学习一下python语言,python随着大数据和人工智能的兴起而日益火爆。边学习边实践的原则学习python,希望自己更上一层楼。我的目标是创建一个自己的网站——太阳站点(sun-site.com),一个自娱自乐的自由空间。

二、学习笔记

  字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }

内置函数含义
len(dict)计算字典元素个数,即键的总数。
str(dict)输出字典,可以打印的字符串表示。
type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。
内置方法含义
radiansdict.clear()删除字典内所有元素
radiansdict.copy()返回一个字典的浅复制
radiansdict.fromkeys()创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
radiansdict.get(key, default=None)返回指定键的值,如果键不在字典中返回 default 设置的默认值
key in dict如果键在字典dict里返回true,否则返回false
radiansdict.items()以列表返回一个视图对象
radiansdict.keys()返回一个视图对象
radiansdict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
radiansdict.update(dict2)把字典dict2的键/值对更新到dict里
radiansdict.values()返回一个视图对象
pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
popitem()随机返回并删除字典中的最后一对键和值。

三、实践练习

1、游戏代码

#!/root/anaconda3/bin/python
# This is a python program.
'''
这是一个扑克牌比大小的游戏,在一副扑克牌中随机抽取一张
电脑同样随机抽取一张,根据抽取到的牌面比较大小。
只比较大小,不比较花色,同样花色的大小一致视为平局。
'''
import random

#扑克花色
cardColour = ['黑桃','红桃','梅花','方块']

#扑克字符
cardChr = [str(num) for num in range (2,11)]+['J','Q','K','A']

#生成52张花色牌
cardDict = {s+t:cardChr.index(t) for t in cardChr for s in cardColour}

#加入大小鬼
cardDict.update({'小鬼':13,'大鬼':14})

#生成一副顺牌
oneSetCard = [s+t for t in cardChr for s in cardColour] + ['小鬼','大鬼']

#洗牌
for c in range(len(oneSetCard)):
        oneSetCard.append(oneSetCard.pop(random.randint(0,len(oneSetCard)-1)))

#请切牌选牌
myCard = oneSetCard[int(input('牌已洗好,请输入您选择第几张(0-53):'))]

#剔除你已经选择的卡牌
oneSetCard.remove(myCard)

#计算机选牌
robotCard = oneSetCard[random.randint(0,len(oneSetCard)-1)]

#显示双方抽中的卡牌
print('您抽中的%s,计算机抽中的%s'%(myCard,robotCard))

#判断输赢,根据字典中定义的大小进行判断
if cardDict[myCard] > cardDict[robotCard]:
        print('恭喜,您赢了')
elif cardDict[myCard] > cardDict[robotCard]:
        print('平局')
else:
        print('很遗憾,您输了')

2、设计说明

  • 首先定义牌的花色和字符,这是一副牌的2个组成部分;
  • 定义一个字典,键为每一张独立的牌,值对应牌面大小的值;
  • 生产一个列表,对应54张扑克牌;
  • 利用随机函数和列表方法打乱扑克牌的顺序;
  • 游戏者和计算机各抽取一张卡牌
  • 查询扑克牌字典比较卡牌大小,判断输赢

3、游戏测试

在这里插入图片描述

  • 0
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 好的,我可以回答你的问题。如果你想编写一个程序来比较多个玩家的扑克牌大小,你可以遵循以下步骤: 1. 首先定义一副扑克牌的牌面和花色,可以用列表来表示。 2. 然后定义每张牌的点数和大小,可以使用字典来表示。 3. 接下来,定义玩家和底牌的数据结构,可以使用列表或者字典来表示。 4. 再定义发牌、比较大小和判断胜负等函数。 5. 最后,编写主程序,模拟发牌、比较大小和输出结果等流程。 实现以上步骤后,就可以完成一个简单的多人扑克牌大小的程序。当然,这只是一个初步的框架,你可以根据自己的需求和编程能力来扩展和优化这个程序。 ### 回答2: Python扑克牌多个玩家比大小的问题,可以通过以下步骤解决: 1. 创建一副牌:首先,我们需要创建一副标准的52张扑克牌。可以使用两个列表来表示,一个列表表示扑克牌的花色(如['红桃','方块','梅花','黑桃']),另一个列表表示扑克牌的点数(如['A','2','3',...,'K'])。 2. 洗牌:使用random模块的shuffle函数将牌随机打乱,模拟真实洗牌的过程。 3. 发牌:将洗好的牌平均分配给每位玩家。可以使用列表来表示每个玩家的手牌,每个玩家手中初始有n张牌。 4. 比较大小:根据扑克牌大小规则,比较每位玩家手中的牌的大小。可以设置一个字典来表示不同点数的牌的大小关系(如{'A': 14, 'K': 13, 'Q': 12, 'J': 11},数字点数直接使用数字表示大小)。遍历每个玩家的手牌,根据点数的大小来比较牌的大小。 5. 输出结果:根据比较的结果,确定最大的牌或者牌面的组合,输出获胜的玩家信息。 以上是使用Python实现扑克牌多个玩家比大小的简单方法。在实际应用中,还可以考虑更复杂的规则和算法,例如考虑花色的大小关系、判断是否有特殊牌型等等。 ### 回答3: Python扑克牌多个玩家比大小可以通过以下步骤实现: 1. 首先,创建一副扑克牌列表,包括所有的花色和点数。可以使用嵌套循环的方式生成所有的牌,并将其添加到列表中。 ```python suits = ['方块', '梅花', '红心', '黑桃'] ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'] deck = [(suit, rank) for suit in suits for rank in ranks] ``` 2. 接下来,创建多个玩家,并为每个玩家分发两张牌。可以使用random模块中的shuffle函数随机打乱扑克牌列表,并使用切片操作将前两张牌分给每个玩家。 ```python import random random.shuffle(deck) num_players = 4 players = [[] for _ in range(num_players)] for i in range(2): for j in range(num_players): players[j].append(deck.pop(0)) ``` 3. 定义一个函数来计算每个玩家手中牌的总点数。根据扑克牌的点数规则,使用条件语句逐张判断并累加总点数。 ```python def calculate_points(hand): total = 0 for card in hand: rank = card[1] if rank.isdigit(): total += int(rank) elif rank in ('J', 'Q', 'K'): total += 10 elif rank == 'A': total += 11 return total ``` 4. 最后,比较每个玩家的总点数,并找到最大点数的玩家。可以使用内置的max函数和列表推导式找到最大值,以及index方法找到最大值对应的索引。 ```python max_points = max([calculate_points(player) for player in players]) winner = players[[calculate_points(player) for player in players].index(max_points)] ``` 以上就是使用Python实现扑克牌多个玩家比大小的简单方法。根据实际需要可以添加更多功能,如同花顺判断、游戏回合等。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒悦sunsite

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值