如何生成一个计算列表中元素的函数?

2024-05-28 19:39:12 发布

您现在位置: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颗钻石(“0D”),则得分将为-36

示例

>>> list1 = [['QD', '7D', '5H', '0D'], ['7C', '6D', '2H', 'KS'], ['8S', '3D', '9C', 'KD'], ['4D', '9D', 'KH', '4C'],['7S', 'JH', '4H', 'QC'], ['2S', 'KC', 'AD', 'AC'], ['JD', '8D', 'QS', '6H'], ['AH', '9H', '9S', '6S'],['5S', '0S', 'JC', '2D'],['5D', '8H', '0C', '7H'], ['JS', '6C', '2C', 'AS'], ['3S', '4S', '5C', '0H'], ['3C', 'QH', '3H', '8C']]

输出值为-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

Tags: in游戏列表ifvaluecardlistcards
1条回答
网友
1楼 · 发布于 2024-05-28 19:39:12

在这两种情况下都将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

相关问题 更多 >

    热门问题