我只是这个的初学者,但正在寻求帮助。我正在尝试制作一款即席游戏,并且有一个纸牌生成器(摘自:https://math.stackexchange.com/questions/1303497/what-is-the-algorithm-to-generate-the-cards-in-the-game-dobble-known-as-spo) 我正在尝试将打印输出发送到词典,在该词典中,卡号是键,并且在生成的卡ID中将其作为值列出。
这是我到目前为止所拥有的:
nIm = 4
n = nIm - 1
r = range(n)
rp1 = range(n+1)
c = 0
a=dict={}
# First card
c+=1
for i in rp1:
a['Card %2d:' %c]=(i+1)
print(a)
print()
# n following cards
for j in r:
if j not in r:
c = c+1
a['Card %2d:' %c]=(1)
print(a)
for k in r:
a['Card %2d:' %c]=(n+2 + n*j +k)
print(a)
print()
有人知道我该怎么做吗? 预先感谢!
答案 0 :(得分:0)
我好像您正在使用以下语句将键/值对设置为字典确定:
a['Card %2d:' %c]=(i+1)
和
a['Card %2d:' %c]=(n+2 + n*j +k)
我看不到您提到的ID。假设您的ID位于名为ids
的列表中,则可以将其添加到字典中,如下所示:
a['ids'] = ids
这是a
之后的样子。
print(a) # {'Card 2:': 4, 'ids': [1, 2, 3, 4, 5]}
假设为ids = [1,2,3,4,5]
。
答案 1 :(得分:0)
您非常接近它。对于每张卡,您首先需要在dict中创建一个空集作为值,然后调用该集的“添加”方法以将每个ID添加到该集。
# First card
c+=1
a['Card %2d:' %c] = set()
for i in rp1:
a['Card %2d:' %c].add(i+1)
print(a)
print()
# n following cards
for j in r:
if j not in r:
c = c+1
a['Card %2d:' %c] = {1}
print(a)
for k in r:
a['Card %2d:' %c].add(n+2 + n*j +k)
print(a)
print()
此外,在开头有“ a = dict = {}”的地方,您可以只说一个
a = {}
或
a = dict()
看起来不错!稍后,您可以查看collections模块中的“ defaultdict”,当字典中尚不存在该键时,可以使用该模块自动创建一个空集(或其他类型的值)作为默认值。但是你所拥有的很好。