【发布时间】:2015-11-03 02:09:06
【问题描述】:
我正在编写一个基本的 uno 类型的纸牌游戏,并且希望能够(同时为玩家制作 7 张牌)检查该值是否已经在玩家的牌组中(我使用随机)。我得到了一个不可散列的 dict 错误,其他一些问题是关于相同的错误,但在代码的不同部分。不管怎样,这是我的代码。
def CardGame():
nm=8
clist=["Red","Blue","Green","Yellow"]
nlist=[]
for i in range(0,10):
nlist.append(i)
pd={}
deck={"Red":0,"Red":1,"Red":2,"Red":3,"Red":4,"Red":5,"Red":6,"Red":7,"Red":8,"Red":9,"Blue":0,"Blue":1,"Blue":2,"Blue":3,"Blue":4,"Blue":5,"Blue":6,"Blue":7,"Blue":8,"Blue":9,"Green":0,"Green":1,"Green":2,"Green":3,"Green":4,"Green":5,"Green":6,"Green":7,"Green":8,"Green":9,"Yellow":0,"Yellow":1,"Yellow":2,"Yellow":3,"Yellow":4,"Yellow":5,"Yellow":6,"Yellow":7,"Yellow":8,"Yellow":9}
for i in range(1,nm):
c=random.choice(clist)
d=random.choice(nlist)
if ({c:d}) in deck:
pd.update({c:d})
del deck[c:d]
else:
nm=nm+1
print("%s %s"%(c,d))
【问题讨论】:
-
与您的错误不完全相关,但在创建后立即尝试
print(deck),您可能会惊讶地看到它有多少条目。 -
哦,我看到最后一个条目是如何覆盖其他条目的;有没有办法解决这个问题?
-
你为什么使用随机来检查一个值是否在牌组中?似乎您应该遍历所有组合。
-
@Rutvik:您的字典键在所有卡片中必须是唯一的。你的价值观并不重要(你真的不需要字典;一套就可以了)。您可以将您的密钥形成为,例如,“R0”、“B8”等。
-
@RutvikMarathe 您可以使用元组列表:
[("Red", 0), ("Red", 1)]或字符串列表:["Red0", "Red1"]。在字典中,每个键只能有一个对应的值。换句话说,deck["Red"]只能返回一个值。 More on dictionaries here
标签: python