python 实现记牌器原理

  • 方案一(减牌记牌)
  • 方案二(增牌记牌)
  • 字典Update更新初学者常见报错问题

方案一(减牌记牌)

假设与这“333445667788QQJ”十五张牌,每人五张牌

a = "333445667788QQJ"for i in range(len(a)):# 玩家一one = input("one:")for c in one:if c in a:a = a.replace(c, '', 1)print(a)# 玩家二two = input("two:")for c in two:if c in a:a = a.replace(c, '', 1)print(a)# 玩家三        three = input("three:")for c in three:if c in a:a = a.replace(c, '', 1)print(a)

终端输出:

>one:3    结果输出:33445667788QQJ
>two:3  结果输出:3445667788QQJ
>three:3  结果输出:445667788QQJ
>`one:4  结果输出:45667788QQJ
>two:4  结果输出:5667788QQJ
>three:5  结果输出:667788QQJ
>......

牌数量每发一张牌减掉一张牌

方案二(增牌记牌)

注释:T表示10,X表示小王,D表示大王

该实现假设使用扑克牌的点数(2~9,T,J,Q,K,A,X,D)来计数,且只考虑一副标准52张的扑克牌。

首先,需要定义一个初始的空牌堆(即52张牌每张牌的初始数量为0),可以使用字典来表示:

cards = cards = {'2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0, '9': 0, 'T': 0, 'J': 0, 'Q': 0, 'K': 0, 'A': 0, 'X': 0,'D': 0}

然后,在每次发牌时,对应点数的牌的数量加1即可:

cards[card_number] += 1

例如,当发出3、5、6、8四张牌时,计数器应为:

cards =  {'2': 0, '3': 1, '4': 0, '5': 1, '6': 1, '7': 0, '8': 1, '9': 0, 'T': 0, 'J': 0, 'Q': 0, 'K': 0, 'A': 0, 'X': 0,'D': 0}

需要注意的是,如果使用多副扑克牌,需要把初始牌堆的数量扩大到多倍。

完整的记牌器代码如下:


import re# 左边键是卡牌,右边是卡牌数量
cards =  {'2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0, '9': 0, 'T': 0, 'J': 0, 'Q': 0, 'K': 0, 'A': 0, 'X': 0,'D': 0}
# 没发牌前
print(cards)# 发四张牌
n = 0
while True:data = {}def record_card(card_number):cards[card_number] += 1def print_cards():for card_number, count in cards.items():# print(f'{card_number}: {count}')data.update([(card_number, count)])print(data)name = str(input('输入2~9,T,J,Q,K,A,X,D:'))if re.match('[23456789TJQKAXD]', name):record_card(int(name))# 启动函数print_cards()n += 1if n == 4:breakelse:print("你的输入有误,输入范围:2~9,T,J,Q,K,A,X,D")continue

字典Update更新初学者常见报错问题

data.update(f'{card_number}: {count}')
# ValueError:字典更新序列元素#0的长度为1;需要2个---因为一个字符串是无法使用更新字典,需要弄成字典或元组列表更新字典,如下:
data.update([(f'{card_number}', f'{count}')])

当您尝试使用序列(如列表或元组)更新字典时,会出现此错误消息,其中一个元素的长度为1,而不是预期的2。

例如,考虑以下代码:

my_dict = {'name': 'John', 'age': 30}
my_dict.update([('height', 180), ('weight',)]) # 权重只有一个值,而不是两个

在这种情况下,update()方法需要一个元组序列,其中每个元组有两个值:一个键及其对应的值。但是,第二个元组(‘weight’,)只有一个值,从而导致ValueError

要修复此错误,需要确保序列中的每个元组都有两个值。在上面的示例中,您可以删除缺少值的元组以避免错误:

my_dict.update([('height', 180), ('weight', 80)])

现在,update()方法将把“height”和“weight”键及其相应的值添加到字典中,而不会引发任何错误。

python 实现记牌器原理相关推荐

  1. 基于opencv2的斗地主记牌器(python)

    一.开发该系统软件环境及使用的技术说明 开发环境:JetBrains PyCharm Community Edition 2019.2.5 x64 远端仓库:GitHub 语言版本:python3.7 ...

  2. qq四国军旗2.1 beat03 builde018记牌器开发思路(三)

    今天发现,四国的版本更新为18了.对应棋子内存起始值变为0x4979fc.全地址为: //C#代码 private static readonly IntPtr baseAddresss = (Int ...

  3. JJ斗地主记牌器java开发_【欢乐斗地主记牌器制作】遇到两个问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本菜笔准备用swing做个记牌器,但是遇到俩问题,求助大神. 先抛出最简单的问题:点击button1文本框textfield1中数字会减一,但是我怎么实现 ...

  4. qq四国军旗2.1 beat03 builde017记牌器开发思路(一)

    一.棋盘结构分析 首先,根据存档文件找到棋子 军旗:0x00000002 地雷:0x00000003 炸弹:0x00000004 司令:0x00000005 军长:0x00000006 师长:0x00 ...

  5. python语言:装饰器原理

    . 装饰器 装饰器是 Python 的重要组成部分.简而言之:它们是修改其他功能的功能.它们有助于使我们的代码更短.更 Pythonic.大多数初学者不知道在哪里使用它们,所以我将分享一些装饰器可以让 ...

  6. python装饰器原理-Python装饰器的实现原理

    Python中的装饰器是通过利用了函数特性的闭包实现的,所以在说装饰器之前,我们需要先了解函数特性,以及闭包是怎么利用了函数特性的. 1.函数特性 Python中的函数特性总的来说有四点: 1.函数作 ...

  7. python装饰器原理-Python装饰器原理与用法分析

    这篇文章主要介绍了Python装饰器原理与用法,结合实例形式分析了Python装饰器的概念.原理.使用方法及相关操作注意事项,需要的朋友可以参考下 本文实例讲述了Python装饰器原理与用法.分享给大 ...

  8. python装饰器原理-python 中的装饰器及其原理

    装饰器模式 此前的文章中我们介绍过装饰器模式: 装饰器模式中具体的 Decorator 实现类通过将对组建的请求转发给被装饰的对象,并在转发前后执行一些额外的动作来修改原有的部分行为,实现增强 Com ...

  9. python装饰器原理-Python 装饰器工作原理解析

    #!/usr/bin/env python #coding:utf-8 """ 装饰器实例拆解 """ def login00(func): ...

最新文章

  1. 是否提交由npm 5创建的package-lock.json文件?
  2. jQuery选择器整理
  3. python高级语言设计我是卧底_Python高级应用程序设计任务
  4. Java中的命令设计模式
  5. 《走出软件作坊》流水账
  6. mysql服务没有权限开机不会自启动_计算机服务项里没有MySQL服务,无法设置开机自启动或者关闭自启动,的解决办法...
  7. 判断一个js对象是否是Array
  8. 群体智能之粒子群优化(PSO)
  9. C#:实现读取网卡信息
  10. macbook pro忘记开机密码怎么办
  11. 计算机维修与数据恢复论文,备份恢复论文,关于计算机数据备份数据恢复技术相关参考文献资料-免费论文范文...
  12. git clone下来的文件中.git文件被隐藏了
  13. Linux 校准时间命令及其方法
  14. 录音文件转换成文字很难吗?这几个步骤就可以解决烦恼了
  15. PPP协议和MAC地址、IP地址及ARP协议三者之间的关系(3.2)
  16. 在Multisim导入TI提供的SPICE模型
  17. 百业升级 共启新程——CDEC2021中国数字智能生态大会武汉站今日举行
  18. 更快学习编程的7个重要技巧
  19. linux远程取证,铁三Linux取证(示例代码)
  20. 行车百科系列之(四): 交警执法宝典(内部资料)

热门文章

  1. linux查看端口和pid
  2. C语言输人两个正整数m和n,求其最大公约数和最小公倍数
  3. 很全的linux网络编程技巧
  4. 微信小程序渲染层错误:可以在AppData中获取到值但无法渲染到页面
  5. 海大11年春第1题:商场促销,购物每满100减20,满500再减20.如购770元商品, 折扣后只需付款610元。编程实现:输入一个购物金额,计算输出实付款值。(6分)
  6. c#的excel边距设置
  7. 苹果4s忘记id密码怎么办_苹果手机便签分类密码忘记了,怎么办?
  8. 前端开发--webpack打包工具
  9. Android TextView中改变部分文字颜色的几种方式
  10. WOE评分卡--WOE理论