孟轩伊 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 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题