在 Python 中创建具有动态数量条件的 WHILE 循环

问题描述 投票:0回答:1

我正在寻找创建动态 WHILE 循环的解决方案。例如,如果我有一个具有灵活数量的玩家 (2-6) 的游戏,并且每个玩家都有一个分数,则当其中一个玩家达到 100 分时,WHILE 循环应该结束。我有一个想法来创建一个嵌套列表,其中每个列表项都是另一个包含玩家信息的列表,即玩家姓名和分数,例如:

players = [['Player 1', 0], ['Player 2', 0]]

在这个例子中,有两个玩家。玩家 1 和玩家 2 的当前得分均为 0。以下是示例代码:

import random
players = [['Player 1', 0], ['Player 2', 0]]

while players[0][1] < 100 and players[1][1] < 100:
    chances = [0, 1]
    for i in range(0, len(players)):
        player = players[i]
        score = random.choice(chances)
        if score == 1:
            player[1] += 1
        if player[1] == 100:
            winner = player[0]

print('Congrats {0}, you have won the game'.format(winner))

机会就是无论他们玩什么游戏,如果玩家得到 0,什么也不会发生,如果他得到 1,他的分数会增加 1。谁先达到 100,谁就赢得了游戏。

如果现在有第三个、第四个或第五个玩家,我就必须相应地调整代码中的 WHILE 循环:

players = [['Player 1', 0], ['Player 2', 0], ['Player 3', 0]

players = [['Player 1', 0], ['Player 2', 0], ['Player 3', 0], ['Player 4', 0]

等等。

是否有一种动态方法可以做到这一点,我不需要有固定数量的玩家或导致 IndexError 异常?

提前非常感谢您的帮助!

python python-3.x while-loop
1个回答
0
投票

您可以使用

all()
函数和生成器表达式来测试每个玩家的分数是否小于 100:

while all(player[1] < 100 for player in players)
© www.soinside.com 2019 - 2024. All rights reserved.