Sprawdzanie poprawności ciągów wejściowych użytkownika w Pythonie

Przeszukałem więc prawie każdą permutację słów „string”, „python”, „validate”, „user input” itd., Ale jeszcze nie znalazłem rozwiązania, które działa dla mnie.

Moim celem jest zachęcenie użytkownika do sprawdzenia, czy chcą rozpocząć kolejną transakcję przy użyciu łańcuchów „tak” i „nie”, i doszedłem do wniosku, że porównanie ciągów będzie dość łatwym procesem w Pythonie, ale coś po prostu nie działa dobrze. Używam Pythona 3.X, więc wejście powinno przyjmować ciąg bez użycia surowego wejścia, o ile rozumiem.

Program zawsze odrzuci nieprawidłowe dane, nawet po wprowadzeniu „tak” lub „nie”, ale naprawdę dziwne jest to, że za każdym razem, gdy wprowadzę ciąg> 4 znaki długości lub wartość int, sprawdzi to jako prawidłowy pozytyw wprowadź i uruchom ponownie program. Nie znalazłem sposobu, aby uzyskać poprawne dane wejściowe negatywne.

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

Próbowałem też

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

Byłbym bardzo wdzięczny nie tylko za pomoc w rozwiązaniu mojego problemu, ale jeśli ktoś ma jakieś dodatkowe informacje na temat tego, jak Python radzi sobie ze strunami, które byłyby świetne.

Przepraszam z wyprzedzeniem, jeśli ktoś inny zadał już takie pytanie, ale zrobiłem, co w mojej mocy, by go wyszukać.

Dziękuje wszystkim!

~ Dave

questionAnswers(2)

yourAnswerToTheQuestion