如何要求添加多个列表

2024-04-29 15:25:17 发布

您现在位置:Python中文网/ 问答频道 /正文

热衷于收集弹珠的孩子们想和他们玩不同的游戏

经过长时间的讨论,并确保每个孩子玩游戏的弹珠数量相等,他们最终同意以下规则:

每个“黑色”大理石得3分。 每个“红色”大理石都会得到5分。 每一块“银色”大理石得7分。 当查看一个孩子的弹珠时,如果看到一个“白色”弹珠,该孩子的得分将结束,他/她将无法为他/她的其余弹珠(包括“白色”弹珠)得分。 每一种颜色的大理石得2分。 比赛结束时,得分最高的孩子将成为赢家。在平局的情况下,弹珠得分较晚的孩子将成为赢家。 编写一个名为marble_game的函数,它获取字符串列表,其中每个列表代表一个孩子的大理石。此函数必须返回一个列表,该列表由字符串列表和整数组成,分别是赢家孩子的弹珠和该孩子的总分

请注意,游戏中的儿童数量和儿童弹珠数量可能因游戏的不同游戏而异

我有这样的例子,但我不能添加一个以上的列表功能,我该如何修复它或我该如何解决这个例子

def marble_game(**kwargs,**args):
    points=0

    for i in liste:
        if i=="black":
            points+=2

        elif i=="red":
            points+=5

        elif i=="silver":
            points+=7

        #return points
        return points

#print(marble_game(["red","red","silver"]))
print(marble_game(["red","red","silver"],["blue","blue","blue"]))

Tags: 函数game游戏列表数量silver孩子blue
3条回答

对于许多参数,请尝试*args

def marble_game(*args):
    points = 0
    for item in args:
        for i in item:
            if i == "black":
                points += 2

            elif i == "red":
                points += 5

            elif i == "silver":
                points += 7
    return points

print(marble_game(["red","red","silver"]))
print(marble_game(["red", "red", "silver"], ["blue", "blue", "blue"]))

对于列表的最高值-将值始终存储在“点”中,并在列表具有较高值时覆盖:

        def marble_game(*args):
            points = 0
            for item in args:
                current = 0
                for i in (item):
                    if i == "black":
                        current += 2

                    elif i == "red":
                        current += 5

                    elif i == "silver":
                        current += 7
                if current > points:
                    points = current
            return points

最后一点是:)你可能想把你的分数保存在字典里——因为你的if语句会增长,这会让你的代码读起来有点困难

        def marble_game(*args):
            points = 0
            score_dict = {'black': 2,
                          'red' : 5,
                          'silver' : 7}

            for item in args:
                current = 0
                for i in item:
                    current += score_dict.get(i, 0)
                if current > points:
                    points = current
            return points

此代码使用Arbitrary Arguments (*args)获取输入,然后使用字典存储所有数据

def marble_game(*list_of_kids):
    # store all kids' results along with their marbles
    scores = {}
    for kids_marbles in list_of_kids:
        # reset score for everyone
        points = 0
        for i in kids_marbles:
            if i == "black":
                points += 3
            elif i == "red":
                points += 5
            elif i == "silver":
                points += 7
            elif i == "white":
                scores[points] = kids_marbles
                # stop counting
                break
            # every other color scores 2
            else:
                points+=2
        # save score
        scores[points] = kids_marbles
    # return the max score
    max_score = max(scores.keys())
    return scores[max_score], max_score


print(marble_game(["red","red","silver"]))
print(marble_game(["red", "red", "silver"], ["blue", "blue", "blue"]))
# output
(['red', 'red', 'silver'], 17)
(['red', 'red', 'silver'], 17)
    # store all kids' results along with their marbles
    scores = {}
    for kids_marbles in list_of_kids:
        # reset score for everyone
        points = 0
        for i in kids_marbles:
            if i == "black":
                points += 3
            elif i == "red":
                points += 5
            elif i == "silver":
                points += 7
            elif i == "white":
                points = 0
                # stop counting
                break
            # every other color scores 2
            else:
                points+=2
        # save score
        scores[points] = kids_marbles
    # return the max score
    max_score = max(scores.keys())
    return scores[max_score], max_score


print(marble_game(["red","red","silver"]))
print(marble_game(["red", "red", "silver"], ["blue", "blue", "blue","silver","black","black"],["silver","silver","silver","white","red"])) 

相关问题 更多 >