当前位置: 首页 > news >正文

iis7 新建网站金华市建设局网站贾润根

iis7 新建网站,金华市建设局网站贾润根,html制作一个网站代码,如何做宣传推广效果最好文章目录 **代码分解与讲解**1. **扑克牌的生成与洗牌**2. **给玩家发牌**3. **打印玩家的手牌**4. **定义牌的优先级**5. **判断牌型**6. **确定牌型优先级**7. **比较两手牌的大小**8. **计算每个玩家的牌型并找出赢家**9. **打印结果** 完整代码 以下游戏规则#xff1a; 那… 文章目录 **代码分解与讲解**1. **扑克牌的生成与洗牌**2. **给玩家发牌**3. **打印玩家的手牌**4. **定义牌的优先级**5. **判断牌型**6. **确定牌型优先级**7. **比较两手牌的大小**8. **计算每个玩家的牌型并找出赢家**9. **打印结果** 完整代码 以下游戏规则 那么我们要实现的功能就是以下几个 生成扑克牌。随机洗牌并分发给五名玩家每人三张牌。判断每位玩家的牌型例如豹子、同花顺等。比较五名玩家的牌型得出赢家。 代码分解与讲解 1. 扑克牌的生成与洗牌 suit_cards [黑桃, 红桃, 方块, 梅花] # 花色 check_number [2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A] # 点数# 嵌套循环生成扑克牌 # poker_list [f{suit}{check} for suit in suit_cards for check in check_number] poker_list [] for suit in suit_cards:for check in check_number:poker_list.append(f{suit}{check})random.shuffle(poker_list) # 洗牌功能 通过嵌套循环生成一副完整的扑克牌共 52 张。 例如“黑桃2”、“红桃A” 等。 使用 random.shuffle() 对扑克牌列表进行随机洗牌确保发牌的随机性。这里面把存储牌的容器设置为列表poker_list其实集合set也可以不过集合有随机性还是喜欢都在掌握中的感觉而且列表方便管理。 2. 给玩家发牌 player [player1, player2, player3, player4, player5] # 玩家列表 # player_poker {p: [] for p in player} # 初始化每个玩家的手牌为空列表字典推导式 player_poker {} # 初始化一个空字典 for p in player: # 遍历每个玩家player_poker[p] [] # 为每个玩家赋值一个空列表表示其手牌player_poker是个字典键是用户列表是值也就是玩家手牌# 确保牌的数量足够分发 if len(poker_list) len(player) * 3:raise ValueError(牌堆中牌的数量不足以分发给所有玩家)# 每人发三张牌 for i in range(3): # 每人发3轮for p in player: # 嵌套循环player中有5个一共循环15次poker poker_list.pop() # 从牌堆顶部发一张牌player_poker[p].append(poker)功能 初始化 5 名玩家每名玩家分配一个空手牌列表。检查如果牌堆中牌的数量不足则抛出错误。每名玩家每轮发一张牌共发 3 轮每人得到 3 张牌。发牌后每名玩家的牌存储在 player_poker 中结构如下{player1: [黑桃K, 方块Q, 红桃A],player2: [梅花7, 黑桃8, 红桃10],... }3. 打印玩家的手牌 for player, pokers in player_poker.items(): # items是字典的方法返回一个可迭代对象每个元素是一个键值对print(f{player}的牌是{, .join(pokers)})功能 将每名玩家的手牌以字符串形式打印出来方便观察。.join() 是一个字符串方法用于将列表中的元素用指定的字符串连接起来。, .join(pokers) 会将列表中的元素用逗号加空格, 连接成一个字符串 , .join([黑桃A, 红桃K, 方块Q]) # 结果: 黑桃A, 红桃K, 方块Q 输出示例 player1的牌是黑桃K, 方块Q, 红桃A player2的牌是梅花7, 黑桃8, 红桃10 ...4. 定义牌的优先级 point_rank {point: i for i, point in enumerate(check_number, start2)} # 字典推导式i,point对这里解释一下point是键i是值 可以去看一下字典推导式的结构组成 功能 point_rank定义点数的大小数值越大点数越高。例如“A” 的优先级最大值为 14。{2: 2, 3: 3, ..., K: 13, A: 14}5. 判断牌型 def poker_type(cards): #这个cards是列表也就是前面键值对中的值points sorted([card[2:] for card in cards], keylambda x: point_rank[x]) # 提取点数并按大小排序suits [card[:2] for card in cards] # 提取花色列表推导式索引前两个字符# 判断是否为豹子if points[0] points[1] points[2]:return 豹子, points# 判断是否为同花顺is_straight (point_rank[points[2]] - point_rank[points[1]] 1 and \point_rank[points[1]] - point_rank[points[0]] 1) or points [2, 3, A]if len(set(suits)) 1 and is_straight: # len(set(suit))1判断一个列表或字符串中的所有元素是否相同return 同花顺, points# 判断是否为顺子if is_straight:return 顺子, points# 判断是否为同花if len(set(suits)) 1:return 同花, points# 判断是否为对子if points[0] points[1] or points[1] points[2] or points[0] points[2]:return 对子, points# 如果都不是返回单张return 单张, points功能 根据玩家的三张牌判断牌型并返回 牌型名称 和 点数列表。 豹子三张点数相同。同花顺花色相同点数连续。顺子点数连续但花色不一定相同。同花花色相同但点数不一定连续。对子两张牌点数相同。单张既不连续也不同花或对子。 6. 确定牌型优先级 hand_rankings [单张, 对子, 顺子, 同花, 同花顺, 豹子]功能 定义牌型的优先级牌型从低到高依次为 单张 对子 顺子 同花 同花顺 豹子。 7. 比较两手牌的大小 def compare_hands(player1, player2):type1, points1 player1type2, points2 player2# 比较牌型优先级if hand_rankings.index(type1) hand_rankings.index(type2):return 1elif hand_rankings.index(type1) hand_rankings.index(type2):return -1# 如果牌型相同逐个比较点数for p1, p2 in zip(reversed(points1), reversed(points2)):if point_rank[p1] point_rank[p2]:return 1elif point_rank[p1] point_rank[p2]:return -1# 如果点数相同return 0功能 先比较两手牌的牌型优先级优先级高者胜。如果牌型相同逐一比较点数由高到低比较。 8. 计算每个玩家的牌型并找出赢家 player_hands {player: poker_type(cards) for player, cards in player_poker.items()}winner max(player_hands.items(), keylambda item: (hand_rankings.index(item[1][0]), item[1][1]))功能 遍历每名玩家的手牌计算牌型。使用 max 函数根据牌型优先级和点数大小找出赢家。 9. 打印结果 print(\n牌局结果:) for player, (hand_type, points) in player_hands.items():print(f{player} 的牌型: {hand_type} ({, .join(points)}))print(f赢家是: {winner[0]}牌型: {winner[1][0]} ({, .join(winner[1][1])}))功能 输出每名玩家的牌型和点数。输出赢家及其牌型。 输出示例 player1 的牌型: 顺子 (10, J, Q) player2 的牌型: 对子 (8, 8, K) player3 的牌型: 单张 (7, 9, A) player4 的牌型: 同花 (4, 6, J) player5 的牌型: 豹子 (K, K, K)赢家是: player5牌型: 豹子 (K, K, K)完整代码 import random# 定义扑克牌花色和点数 suit_cards [黑桃, 红桃, 方块, 梅花] check_number [2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A]# 生成扑克牌 poker_list [f{suit}{check} for suit in suit_cards for check in check_number] random.shuffle(poker_list) # 洗牌# 玩家和玩家手牌 player [player1, player2, player3, player4, player5] player_poker {p: [] for p in player}# 发牌每人发三张 if len(poker_list) len(player) * 3:raise ValueError(牌堆中牌的数量不足以分发给所有玩家)for i in range(3):for p in player:poker poker_list.pop()player_poker[p].append(poker)# 打印每个玩家的牌 for player, pokers in player_poker.items():print(f{player}的牌是{, .join(pokers)})# 定义点数优先级 point_rank {point: i for i, point in enumerate(check_number, start2)}# 判断牌型 def poker_type(cards):points sorted([card[2:] for card in cards], keylambda x: point_rank[x])suits [card[:2] for card in cards]# 判断是否为豹子if points[0] points[1] points[2]:return 豹子, points# 判断是否为同花顺is_straight (point_rank[points[2]] - point_rank[points[1]] 1 and \point_rank[points[1]] - point_rank[points[0]] 1) or points [2, 3, A]if len(set(suits)) 1 and is_straight:return 同花顺, points# 判断是否为顺子if is_straight:return 顺子, points# 判断是否为同花if len(set(suits)) 1:return 同花, points# 判断是否为对子if points[0] points[1] or points[1] points[2] or points[0] points[2]:return 对子, points# 否则为单张return 单张, points# 定义牌型优先级 hand_rankings [单张, 对子, 顺子, 同花, 同花顺, 豹子]# 比较两手牌的大小 def compare_hands(player1, player2):type1, points1 player1type2, points2 player2# 比较牌型优先级if hand_rankings.index(type1) hand_rankings.index(type2):return 1elif hand_rankings.index(type1) hand_rankings.index(type2):return -1# 如果牌型相同逐个比较点数for p1, p2 in zip(reversed(points1), reversed(points2)):if point_rank[p1] point_rank[p2]:return 1elif point_rank[p1] point_rank[p2]:return -1# 如果点数相同结果为平局return 0# 计算每个玩家的牌型 player_hands {player: poker_type(cards) for player, cards in player_poker.items()}# 找出最大牌 winner max(player_hands.items(), keylambda item: (hand_rankings.index(item[1][0]),[point_rank[point] for point in item[1][1]]))# 打印结果 print(\n牌局结果:) for player, (hand_type, points) in player_hands.items():print(f{player} 的牌型: {hand_type} ({, .join(points)}))print(f赢家是: {winner[0]}牌型: {winner[1][0]} ({, .join(winner[1][1])}))
http://www.dnsts.com.cn/news/79709.html

相关文章:

  • 铜仁网站建设哪家专业郑州平面设计公司排名
  • 门户营销型网站搭建北京高级网站开发
  • iis7.5添加网站网站建设上传和下载
  • 上海比较好的公司排名seo推广公司网站模板
  • 做网站用什么云服务器文化馆 网站 设计
  • 昆山装饰公司网站建设推广是什么意思
  • 自己做网站犯法吗微信怎么制作网页
  • 四川有什么好的网站建设公司视频制作软件哪个好 前十名
  • 成都建设网站首页网站忧化 优帮云
  • 部门子网站建设领导小组那些网站可以做兼职
  • 外贸人常用网站自己能自学网站建设吗
  • 格尔木网站建设公司自己做网站兼职
  • 网站外包注意事项巨量引擎
  • 绵阳建设局网站皱劲松银铃建设通官方网站
  • 网站系统免费做表格的网站
  • 网站建设项目验收报告书哪个网站的域名到期直接注册
  • nodejs可以做网站吗关于电子商务的论文
  • 首页有动效的网站网站运营流程
  • html5网站开发环境的搭建万网 做网站
  • 东航集团客户网站是哪家公司建设域名解析 网站
  • 旅游网站建设可行性分析安装网站模板
  • 博学云网站建设北京网站建设代理
  • 锋云科技网站建设百度老旧版本大全
  • 宿州网站建设哪家公司好led网站源码
  • 门户网站开发方案文档什么网站做ppt模板
  • 2015做网站前景wordpress 图像描述
  • 义乌企业网站社群营销的具体方法
  • 有没有人做网站网站建设网络拓扑
  • 什么公司做网站出名怎么在网上做公司网站
  • 滕州市东方建设工程事务有限公司网站凤岗网