【问题标题】:How to create a function that loops back to the first player from the last player?如何创建一个从最后一个玩家循环回第一个玩家的函数?
【发布时间】:2013-06-12 23:00:41
【问题描述】:

这是我到目前为止所得到的。这个游戏最多可以有多个玩家 len(players)。

我希望它每次都能不断提示不同的玩家采取行动。 因此,例如,如果有 3 个玩家 A B C,如果轮到玩家 A,我希望下一个玩家是玩家 B,然后下一个玩家是 C,然后循环回到玩家 A。

如果可能,仅使用 while 循环、if 语句和布尔值。

PLAYERS = 'ABCD'

def next_gamer(gamer):
    count = 0
    while count < len(GAMERS):
    if gamer == GAMERS[0]:
          return GAMERS[count + 1]
    if gamer == GAMERS[-1]
          return GAMER[0]
    count = count + 1

【问题讨论】:

  • 你能更准确地说明你想要达到的目标吗?
  • 您的代码中似乎有一个小的格式错误,可能只是因为粘贴了它。您可能想要编辑它并缩进您的 if 和“count = count + 1”,以便它们落入您的 while 循环中,只是为了清楚起见。

标签: python while-loop


【解决方案1】:

如果您不能使用 .index() 方法,我认为您正在尝试做的是:

    def next_gamer(gamer):
        count = 0
        while count < len(GAMERS):
            if gamer == GAMERS[count]:
                return GAMERS[count + 1]
            count = count + 1
        return GAMERS[0]

【讨论】:

    【解决方案2】:

    我对您上一个问题的解决方案,涉及生成器:

    turn=0
    def gameIsFinished():
        global turn
        turn = turn+1
        return turn >10
    
    def cycle(iterable):
        while True:
            for item in iterable:
                if gameIsFinished():
                    return
                yield item
    
    for player in cycle([1,2,3]):
        print player
    

    【讨论】:

    • 感谢您的帮助!但是,对于我的游戏,除了 while 循环、if 语句和布尔值之外,我不能使用任何东西。您可以使用 while 循环复制结果吗?
    【解决方案3】:

    您可以让您的函数返回您列表 GAMES 中的下一位玩家,使用类似这样的简单语句,无论您当前处于游戏中的哪个玩家,该语句都有效:

    返回 GAMES[GAMERS.index(gamer)+1]

    除非当前玩家是列表中的最后一个,否则您可以使用以下 if 语句进行测试:

    如果 GAMES.index(gamer) == len(GAMERS) - 1:

    返回 GAMES[0]

    在这种情况下,您会返回第一个玩家。

    【讨论】:

    • 注意:我想你会希望你的 while 循环在你的函数“next_gamer()”之外。一旦你的函数返回一些东西,它就会退出函数,从而退出 while 循环。
    • 感谢您的帮助。但是,我仅限于在我的游戏中使用 while 循环、布尔值和 if 语句。没有方法你会怎么做?
    • 那可不好玩!那么你就不需要一个while循环,只要有多少玩家就需要多少if语句。或者您将播放器存储为字典?那么你应该重新定义你的问题。
    • 玩家的数量可以改变,因此需要一个while循环来计算
    • 哦,好的,知道了。我发布了另一个没有 index 方法的答案。
    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多