Python 3.x Python 3:如何在不停止函数的情况下退出循环

Python 3.x Python 3:如何在不停止函数的情况下退出循环,python-3.x,Python 3.x,我是一个完全的新手,在过去的5个小时里,我一直在尝试解决这个问题(用我自己的头脑和在线研究) 下面是我们为模拟游戏而编写的函数的一个片段。我们想提供一个开始新一轮的机会-这意味着如果一个玩家点击“b”,游戏应该在范围的开始(0,玩家)重新开始。但现在它只是进入范围内的下一个玩家(如果玩家1进入“b”,程序调用玩家2) 我试过回击和断球,也试过把它放在另一个while循环中。。。失败。Break和return刚刚结束了函数。 任何提示都非常感谢 您可以将for循环更改为while循环。不要使用范围

我是一个完全的新手,在过去的5个小时里,我一直在尝试解决这个问题(用我自己的头脑和在线研究)

下面是我们为模拟游戏而编写的函数的一个片段。我们想提供一个开始新一轮的机会-这意味着如果一个玩家点击“b”,游戏应该在范围的开始(0,玩家)重新开始。但现在它只是进入范围内的下一个玩家(如果玩家1进入“b”,程序调用玩家2)

我试过回击和断球,也试过把它放在另一个while循环中。。。失败。Break和return刚刚结束了函数。
任何提示都非常感谢

您可以将
for
循环更改为
while
循环。不要使用
范围
,而是将
播放器
设为计数器

players = 4
if 3 <= players < 9:  
    player = 0  # here's where you make your counter
    while player < players:
        sum_points = 0
        throw_per_player_counter = 0
        print("\nIt is player no.", player+1, "'s turn!\n")
        print("\nPress 'return' to roll the dice.\n"
              "To start a new round press 'b'.\n"
              "Player", player+1)
        roll_dice = input(">>> ")
        player += 1  # increment it
        if roll_dice == "b":
            player = 0  # now your reset should work
            throw_per_player_counter = 0
            sum_points = 0
            print("\n * A new round was started. * \n")
players=4
如果3>”)
玩家+=1#增加它
如果掷骰子=“b”:
player=0#现在您的重置应该可以工作了
每名玩家掷骰次数=0
总和=0
打印(“\n*新一轮已开始。*\n”)

谢谢!这确实有助于打破循环!一些测试用例的总分数失败了(显然这是不应该的加倍分数))我注意到这里有很多
player+1
,这很容易成为错误和计算错误的原因。变量并不代表实际值。因为
player
代表一个以
1
开头的玩家号,所以可能值得重新计算-写入以使
player
变量一致地反映其实际值。
player=1
而player
players = 4
if 3 <= players < 9:  
    player = 0  # here's where you make your counter
    while player < players:
        sum_points = 0
        throw_per_player_counter = 0
        print("\nIt is player no.", player+1, "'s turn!\n")
        print("\nPress 'return' to roll the dice.\n"
              "To start a new round press 'b'.\n"
              "Player", player+1)
        roll_dice = input(">>> ")
        player += 1  # increment it
        if roll_dice == "b":
            player = 0  # now your reset should work
            throw_per_player_counter = 0
            sum_points = 0
            print("\n * A new round was started. * \n")