Validando strings de entrada do usuário em Python

Por isso, pesquisei praticamente todas as permutações das palavras "string", "python", "validate", "user input" e assim por diante, mas ainda não encontrei uma solução que funcione para mim.

Meu objetivo é perguntar ao usuário se deseja ou não iniciar outra transação usando as strings "yes" e "no", e imaginei que a comparação de strings seria um processo bastante fácil no Python, mas algo não está funcionando certo. Eu estou usando o Python 3.X, então a entrada deve estar levando em uma string sem usar entrada bruta, tanto quanto eu entendo.

O programa irá sempre retroceder entradas inválidas, mesmo ao digitar 'yes' ou 'no', mas o mais estranho é que toda vez que eu inserir um string com> 4 caracteres de comprimento ou um valor int, ele será validado como válido entrada e reinicie o programa. Não encontrei uma maneira de obter uma entrada negativa válida.

endProgram = 0;
while endProgram != 1:

    #Prompt for a new transaction
    userInput = input("Would you like to start a new transaction?: ");
    userInput = userInput.lower();

    #Validate input
    while userInput in ['yes', 'no']:
        print ("Invalid input. Please try again.")
        userInput = input("Would you like to start a new transaction?: ")
        userInput = userInput.lower()

    if userInput == 'yes':
        endProgram = 0
    if userInput == 'no':
        endProgram = 1

Eu também tentei

while userInput != 'yes' or userInput != 'no':

Eu agradeceria não só a ajuda com o meu problema, mas se alguém tiver alguma informação adicional sobre como o Python lida com strings que seriam ótimas.

Desculpe se alguma outra pessoa já fez uma pergunta como essa, mas fiz o meu melhor para pesquisar.

Obrigado a todos!

~ Dave

questionAnswers(2)

yourAnswerToTheQuestion