2014-09-27 55 views
0

,所以我试图让游戏拼字游戏,但我有一个小问题,我会尽量解释它一样好,我可以:印刷字典键的减去列表变量

我写了一个生成函数7键的字典(关键的是你在你的拼字游戏中获得与键的值意味着我多少次在我手里这封信的字母)

def deal_hand (7) 

产生例如代码:

{'a': 1, 'b': 2, 'k': 1, 'o': 1, 'p': 1, 'r': 1} 

这意味着我们有以下字母:a,b,b,k,o,p,r(因为该键的值是2,所以我们有B的2倍)。

但是现在我想创建一个名为update_hand第2个功能,这个功能应该以用户做出来的WORD_LIST的话(在这个例子类似的词“鲍勃”),并应返回以下2个字典之一

{'a': 1, 'b': 0, 'k': 1, 'o': 0, 'p': 1, 'r': 1} 


{'a': 1, 'k': 1, 'p': 1, 'r': 1} 

我的程序应该返回这些程序之一是因为用户使用了字母:B,O和B.所以没有B和O的左边。

我已经尝试了很多,现在要解决这个问题,我想出了以下功能:

def update_hand(word, hand): 
    newd = {} 
    for x in word: 
     if x in newd: 
      newd[x]+=1 
    else: 
     newd[x] = 1 
    hand[x]-=1 

    return newd 
在这段代码

的字和手的功能的值是:

test_word = raw_input("Enter the word you want to make out of these letters.") 

print update_hand(test_word,de_letters) 

我想我很接近,但我只是得到我输入的最后一个字母的输出,请帮助我! :o

回答

0
def update_hand(hand, name): 
    delkeys = [] 
    for n in name: 
     if not hand[n]: 
      raise ValueError("Cannot remove %s from hand" %n) 
     hand[n] -= 1 
     if not hand[n]: 
      delkeys.append(n) 
    for k in delkeys: 
     hand.pop(k) 
    return hand