python 实现记牌器原理
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 实现记牌器原理相关推荐
- 基于opencv2的斗地主记牌器(python)
一.开发该系统软件环境及使用的技术说明 开发环境:JetBrains PyCharm Community Edition 2019.2.5 x64 远端仓库:GitHub 语言版本:python3.7 ...
- qq四国军旗2.1 beat03 builde018记牌器开发思路(三)
今天发现,四国的版本更新为18了.对应棋子内存起始值变为0x4979fc.全地址为: //C#代码 private static readonly IntPtr baseAddresss = (Int ...
- JJ斗地主记牌器java开发_【欢乐斗地主记牌器制作】遇到两个问题
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本菜笔准备用swing做个记牌器,但是遇到俩问题,求助大神. 先抛出最简单的问题:点击button1文本框textfield1中数字会减一,但是我怎么实现 ...
- qq四国军旗2.1 beat03 builde017记牌器开发思路(一)
一.棋盘结构分析 首先,根据存档文件找到棋子 军旗:0x00000002 地雷:0x00000003 炸弹:0x00000004 司令:0x00000005 军长:0x00000006 师长:0x00 ...
- python语言:装饰器原理
. 装饰器 装饰器是 Python 的重要组成部分.简而言之:它们是修改其他功能的功能.它们有助于使我们的代码更短.更 Pythonic.大多数初学者不知道在哪里使用它们,所以我将分享一些装饰器可以让 ...
- python装饰器原理-Python装饰器的实现原理
Python中的装饰器是通过利用了函数特性的闭包实现的,所以在说装饰器之前,我们需要先了解函数特性,以及闭包是怎么利用了函数特性的. 1.函数特性 Python中的函数特性总的来说有四点: 1.函数作 ...
- python装饰器原理-Python装饰器原理与用法分析
这篇文章主要介绍了Python装饰器原理与用法,结合实例形式分析了Python装饰器的概念.原理.使用方法及相关操作注意事项,需要的朋友可以参考下 本文实例讲述了Python装饰器原理与用法.分享给大 ...
- python装饰器原理-python 中的装饰器及其原理
装饰器模式 此前的文章中我们介绍过装饰器模式: 装饰器模式中具体的 Decorator 实现类通过将对组建的请求转发给被装饰的对象,并在转发前后执行一些额外的动作来修改原有的部分行为,实现增强 Com ...
- python装饰器原理-Python 装饰器工作原理解析
#!/usr/bin/env python #coding:utf-8 """ 装饰器实例拆解 """ def login00(func): ...
最新文章
- 是否提交由npm 5创建的package-lock.json文件?
- jQuery选择器整理
- python高级语言设计我是卧底_Python高级应用程序设计任务
- Java中的命令设计模式
- 《走出软件作坊》流水账
- mysql服务没有权限开机不会自启动_计算机服务项里没有MySQL服务,无法设置开机自启动或者关闭自启动,的解决办法...
- 判断一个js对象是否是Array
- 群体智能之粒子群优化(PSO)
- C#:实现读取网卡信息
- macbook pro忘记开机密码怎么办
- 计算机维修与数据恢复论文,备份恢复论文,关于计算机数据备份数据恢复技术相关参考文献资料-免费论文范文...
- git clone下来的文件中.git文件被隐藏了
- Linux 校准时间命令及其方法
- 录音文件转换成文字很难吗?这几个步骤就可以解决烦恼了
- PPP协议和MAC地址、IP地址及ARP协议三者之间的关系(3.2)
- 在Multisim导入TI提供的SPICE模型
- 百业升级 共启新程——CDEC2021中国数字智能生态大会武汉站今日举行
- 更快学习编程的7个重要技巧
- linux远程取证,铁三Linux取证(示例代码)
- 行车百科系列之(四): 交警执法宝典(内部资料)
热门文章
- linux查看端口和pid
- C语言输人两个正整数m和n,求其最大公约数和最小公倍数
- 很全的linux网络编程技巧
- 微信小程序渲染层错误:可以在AppData中获取到值但无法渲染到页面
- 海大11年春第1题:商场促销,购物每满100减20,满500再减20.如购770元商品, 折扣后只需付款610元。编程实现:输入一个购物金额,计算输出实付款值。(6分)
- c#的excel边距设置
- 苹果4s忘记id密码怎么办_苹果手机便签分类密码忘记了,怎么办?
- 前端开发--webpack打包工具
- Android TextView中改变部分文字颜色的几种方式
- WOE评分卡--WOE理论