Изменение инструкции пользовательского ввода при повторяющихся исключениях

#python #exception #user-input

#python #исключение #пользовательский ввод

Вопрос:

Я пытаюсь написать игру для висельников на python 3. Я выбираю игрока для ввода секретного слова и проверяю, нет ли цифр, специальных символов и т. Д.. Что я хочу иметь возможность сделать, так это дать другому игроку возможность выбрать слово, если текущий игрок попытается нарушить эти правила. Затем я хочу, чтобы это продолжало чередоваться, пока кто-нибудь не введет слово, соответствующее критериям. Что у меня есть сейчас…

 word_to_guess = input(First_player   " has been randomly chosen to pick a word! Please type it in now with no numbers, spaces or special characters: ").lower()
while True:
    if word_to_guess.isalpha():
        break
    word_to_guess = input("OK, "   Second_player   ", since "   First_player   " can't follow the rules, you try it. Again, no numbers, spaces or special characters: ").lower()
  

Итак, если первый игрок получает это, мы двигаемся дальше, если первый игрок терпит неудачу, а второй игрок получает это, мы двигаемся дальше, но если они оба терпят неудачу, написанный код просто продолжит предоставлять игроку 2 выбор слова. По сути, я просто хочу чередовать позиции переменных «First_player» и «Second_player» в этом последнем утверждении с каждым повторением. Есть идеи?

Ответ №1:

Я думаю, что First_player и Second_player, жестко запрограммированные в вашей 5-й строке, могут немного сбить вас с толку.

 word_to_guess = input(First_player   " has been randomly chosen to pick a word! Please type it in now with no numbers, spaces or special characters: ").lower()

turn_player = First_player
last_player = Second_player

while True:
    if word_to_guess.isalpha():
        break
    turn_player, last_player = last_player, turn_player
    word_to_guess = input("OK, "   turn_player   ", since "   last_player   " can't follow the rules, you try it. Again, no numbers, spaces or special characters: ").lower()
  

Ответ №2:

Я думаю, что вы можете использовать переменную flag, которая покажет, чья очередь

 word_to_guess = input(First_player   " has been randomly chosen to pick a word! Please type it in now with no numbers, spaces or special characters: ").lower()
is_first_player_turn = False
while True:
 if is_first_player_turn:
  #First player's turn
 else:
  #Second player's turn
 is_first_player_turn = not is_first_player_turn