孟轩伊 2022-06-02 10:21 采纳率: 100%
浏览 40
已结题

编写斗地主发牌代码,遇到KeyError: 50错误

问题遇到的现象和发生背景

编写斗地主发牌

问题相关代码,请勿粘贴截图

import random

创建一个扑克牌的映射表

定义一个字典映射表

pokers_dict = {}
numbers = [str(i) for i in range(3,11)]

列表: append 单个元素添加, extends 扩展一个列表,insert 指定位置插入元素

numbers.extend(['J','Q','K','2'])
colors = ['♣', '♦', '♠', '♥']
#循环数字和花色列表
#定义一个映射表的 key
dict_key = 0
for number in numbers:
for color in colors:
poker = number + color
#print(poker,end = " ")
#将拼接完成的 poker 存储到映射表中 key-value value就是poker
pokers_dict[dict_key] = poker
#字典中如果key不存在, 该行为就是添加, 如果key重复, 就是覆盖
#dict_key 需要自增, 否则下次添加就是覆盖了
dict_key += 1
pokers_dict[dict_key] = '小♚'
dict_key += 1
pokers_dict[dict_key] = '大♛'

#print(pokers_dict)

#创建一个数字列表, 用于发给玩家
#数值排序 1, 2, 3, 4, 5, 6, ....

numbers = [i for i in range(54)]

#乱序 (相当于洗牌)
random.shuffle(numbers)

player1 = []
player2 = []
player3 = []
base = []

#发牌
for index,num in enumerate(numbers):
print(index,num)
#判断
if index >= 51:
base.append(num)
else:
if index % 3 == 0:
player1.append(num)
elif index % 3 == 1:
player2.append(num)
else:
player3.append(num)

#对玩家手中的数字篇实现排序
player1.sort()
player2.sort()
player3.sort()
base.sort()

#根据玩家手中有序的数字牌,
print('孤烟: ', end='\t')
for player1_key in player1:
poker = pokers_dict[player1_key]
print(poker, end='\t')
print() # 换行

print('房之阳: ', end='\t')
for player2_key in player2:
poker = pokers_dict[player2_key]
print(poker, end='\t')
print() # 换行

print('Matt: ', end='\t')
for player3_key in player3:
poker = pokers_dict[player3_key]
print(poker, end='\t')
print() # 换行

print('底牌: ', end='\t')
for base_key in base:
poker = pokers_dict[base_key]
print(poker, end='\t')

运行结果及报错内容

孤烟: 3♥ 5♦ 6♣ 6♦ 7♦ 7♥ 8♣ 8♥ 9♣ 9♥ 10♠ J♦ J♥ Q♠ K♣ K♦ 2♦
房之阳: 3♦ 3♠ 4♥ 5♣ 5♥ 6♥ 7♣ 7♠ 8♦ 10♦ 10♥ Q♣ K♥ 2♣ 2♥ Traceback (most recent call last):

File "C:\Users\mengxuanyi\Desktop\python\doudizhufapai2.py", line 76, in
poker = pokers_dict[player2_key]

KeyError: 50

我的解答思路和尝试过的方法
我想要达到的结果

孤烟: 3♥ 5♦ 6♣ 6♦ 7♦ 7♥ 8♣ 8♥ 9♣ 9♥ 10♠ J♦ J♥ Q♠ K♣ K♦ 2♦
房之阳:(扑克牌编号)
Matt:(扑克牌编号)
底牌:(扑克牌编号)

  • 写回答

2条回答 默认 最新

  • 不会长胖的斜杠 后端领域新星创作者 2022-06-02 10:38
    关注

    poker = pokers_dict[player2_key]
    pokers_dict这个字典里面没有50这个关键字,少了A吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月10日
  • 已采纳回答 6月2日
  • 创建了问题 6月2日

悬赏问题

  • ¥15 milvus查询出来的score怎么转换成0-1之间的相似性
  • ¥15 多ip服务器站群如何搭建l2tp服务器
  • ¥15 lvgl V9移植到linux开发板
  • ¥15 VB.net中在窗体中创建一个button控件来关闭窗体,但是提示错误,我该怎么办
  • ¥15 网上下载好的程序但是arduinoIDE编程报错,运行不了,哪里出错了,能具体给改一下吗
  • ¥15 Sharepoint JS开发 付费技术指导
  • ¥15 输入程序运行仿真后,烟雾值不实时检测,变成固定值
  • ¥20 数据排序,可选择排序方向
  • ¥15 修改一下代码,考虑进程到达时间不同的情况
  • ¥15 帮我看看这是个啥题,带解题过程和结果,条件如下FCF = 290471.33 g1 = 15% r = 8% g2 = 4% n = 5