6人游戏

Game of 6 players

我希望用户从 6 名球员的菜单中选择两名球员,这些球员将打一场网球比赛。

我尝试制作一个带有子菜单的菜单,但它变得复杂和混乱。

def player1():
    print("You chose player 1, please choose another player")
def player2():
    print("You chose player 2, please choose another player")
def player3():
    print("You chose player 3, please choose another player")
def player4():
    print("You chose player 4, please choose another player")
def player5():
    print("You chose player 5, please choose another player")
def player6():
    print("You chose player 6, please choose another player")


Player_select = {
    1: player1,
    2: player2,
    3: player3,
    4: player4,
    5: player5,
    6: player6
}

Selection = 0


while (Selection != 7):
     print("1. player1")
     print("2. player2")
     print("3. player3")
     print("4. player4")
     print("5. player5")
     print("6. player6")
     print("7. Quit")
     Selection = int(input("Please choose two players: "))
     if (Selection >= 0) and (Selection < 7):
         Player_select[Selection]()
     Selection = Selection - 1

结果是 while 循环持续的时间比我想要的要长。我希望用户选择两个玩家意味着两次迭代?我还希望用户选择的播放器不再出现在第二次迭代中。

def player1():
    print("You chose player 1, please choose another player")
def player2():
    print("You chose player 2, please choose another player")
def player3():
    print("You chose player 3, please choose another player")
def player4():
    print("You chose player 4, please choose another player")
def player5():
    print("You chose player 5, please choose another player")
def player6():
    print("You chose player 6, please choose another player")


Player_select = {
    1: player1,
    2: player2,
    3: player3,
    4: player4,
    5: player5,
    6: player6
}

Selection = 0

count = 0
while (count < 2):
    count += 1
    for k in Player_select:
        print(str(k) +". player"+str(k))
    Selection = int(input("Please choose two players: "))
    if (Selection >= 0) and (Selection < 7):
        Player_select[Selection]()
        del Player_select[Selection]

这会在选择后从字典中删除播放器。你能告诉我为什么在 while 循环结束时将 Selection 减 1 吗?如果我输入 7 退出,循环执行 7 - 1,因此不会退出。

这是一个很好的简短回答 while-loop:

players = ["player1", "player2", 'player3', 'player4', 'player5', 'player6']


def print_player(x):
    print("You chose player:", str(x), "-", players[x-1])


for id, player in enumerate(players, 1):
    print(str(id) + '. ' + player)


chosen_players = []
while len(chosen_players) != 2:
    selection = int(input("Please choose a player: "))
    if selection in range(1, len(players)):
        chosen_players.append(selection)
        print_player(selection)
    else:
        print('Invalid number, choose again')

print('Nice you selected two players:')
print([players[x-1] for x in chosen_players])