Python 如何制作一个计算列表中元素的函数?

Python 如何制作一个计算列表中元素的函数?,python,Python,我正在做我的心脏游戏编程,但我对如何计算每张卡的所有分数感到困惑 这是有值的卡,其他卡的值为0 >>> card_value ={"QS":13,"2H":1,"3H":1,"4H":1,"5H":1,"6H":1,"7H":1,"8H":1,"9H":1,"0H":1,"JH":1,"QH":1,"KH":1,"AH":1,"0D": -10} 但是如果一组列表中的所有子列表都包含一颗心脏,那么分数将为-26;如果一组列表中的所有子列表都包含一颗心脏和10颗钻石,那么分数将

我正在做我的心脏游戏编程,但我对如何计算每张卡的所有分数感到困惑 这是有值的卡,其他卡的值为0

>>> card_value ={"QS":13,"2H":1,"3H":1,"4H":1,"5H":1,"6H":1,"7H":1,"8H":1,"9H":1,"0H":1,"JH":1,"QH":1,"KH":1,"AH":1,"0D": -10}
但是如果一组列表中的所有子列表都包含一颗心脏,那么分数将为-26;如果一组列表中的所有子列表都包含一颗心脏和10颗钻石,那么分数将为-36

范例

此操作的输出将为-36

>>> list2 = ["5C","QS","JH"]
此操作的输出将为14

这就是我迄今为止所尝试的:

def score(list,score=0):
    for cards in list:
        if cards in card_value.keys():
            score += card_value[cards]    
        if cards == "H":
            score = -36
        if cards == "H" or "0D":
            score = -26
   return score
在这两种情况下都将total设置为零,然后执行以下操作

for i in list2: total=total+card_value.get(i,0)

for l in list1:
   for i in l:
    total=total+card_value.get(i,0)
使用这种技术,列表1的总回报是16,而不是36,但我认为你必须明白这一点

编辑:
现在,如果列表中的所有牌都有红心,那么分数将是-26。根据你下面的评论,我假设这实际上意味着如果一组列表中的所有子列表都包含至少一个心脏,那么分数将为-26

for l in list1:
   for i in l:
    total=total+card_value.get(i,0)
    if i[0] == 'H':   # first character of card string is a H- so it's a heart
      heart_counter = heart_counter + 1
if heart_counter == len(list1):
   total = total - 26

我想Marcin的意思是:你用什么方法把列表和字典处理成你描述的总值?就像我下面的答案一样。分数怎么可能是H?如果它是一个分数,那么分数怎么可能是H或0D呢?不,答案应该是-36,因为我在做一个不同版本的心脏。在列表1中,每个列表中有一颗心,还有10颗钻石。所以它一定是-36而不是16。如果列表中的所有卡片都有心形,那么分数将是-26,这与如果一组列表中的所有子列表都有一个心形,那么分数将是-26不同,所以你可以看出我为什么会这样confused@Vorspring啊,是的,我的错!对不起,我的英语不是很好,但我真的试着解释它,我真的想学习编码了。所以我可以和你们一样好!:
for l in list1:
   for i in l:
    total=total+card_value.get(i,0)
    if i[0] == 'H':   # first character of card string is a H- so it's a heart
      heart_counter = heart_counter + 1
if heart_counter == len(list1):
   total = total - 26