Как заставить код прыгать назад, а не вперед?

#python #loops #if-statement #while-loop

Вопрос:

Я работал с заданием вдохновителя, но одна из моих функций определения работает не так, как ожидалось.

Как мне заставить «бросить» вернуться к «догадаться…» вместо того, чтобы перейти к первому цвету?

 def valid_usercolour():
    while True:
        #print('Welcome to the Mastermind') 
        usercolour = input('Please have your guess [r,o,y,g]: ').lower()
        if 'quit' in usercolour:    
            while True:
                dc_quit = input('Do you really wanted to quit the game?[y/n]: ')
                if dc_quit.lower() == "y":
                    print()
                    print('Alright, thank You for playing, Goodbye', user_name, '!' )
                    quit()
                    break 
                elif dc_quit.lower() == "n":
                    print("Alright, let's continue to our game")
                    break
                else:
                    print("Sorry! I don't understand what you mean, could you please type only [Y/N]")
                    continue
                      
        colourslist = ['r','o','y','g']
        if any(character not in colourslist for character in usercolour):
            print("Error! Only Characters ,", colourslist, "are allowed")
            continue
        if len(usercolour) != 4:
            print("Error! Only 4 characters are allowed!")
            continue
        break
    return usercolour
 

Комментарии:

1. прервите и продолжайте применять только самый внутренний цикл

Ответ №1:

else: Просто добавьте и отступите то, что находится под ним прямо перед этим . colourslist Коды Python не «прыгают назад»:

 def valid_usercolour():
    while True:
        #print('Welcome to the Mastermind') 
        usercolour = input('Please have your guess [r,o,y,g]: ').lower()
        if 'quit' in usercolour:
            while True:
                dc_quit = input('Do you really wanted to quit the game?[y/n]: ')
                if dc_quit[0].lower()[0] == "y":
                    print()
                    print('Alright, thank You for playing, Goodbye', user_name, '!' )
                    quit()
                    break 
                elif dc_quit[0].lower()[0] == "n":
                    print("Alright, let's continue to our game")
                    break
                else:
                    print("Sorry! I don't understand what you mean, could you please type only [Y/N]")
                    continue
        else:                      
            colourslist = ['r','o','y','g']
            if any(character not in colourslist for character in usercolour):
                print("Error! Only Characters ,", colourslist, "are allowed")
                continue
            if len(usercolour) != 4:
                print("Error! Only 4 characters are allowed!")
                continue
            break
    return usercolour
 

БОНУС: я добавил [0] значения dc_quit , чтобы заставить брать только одного персонажа. Полное «да» или » нет » тоже работает 😉