Skip to main content

How to Hande Yes/No Questions with User Input in Python

Interacting with users often involves asking yes/no questions.

This guide explores how to implement yes/no questions with user input in Python, handling different responses, and incorporating looping to ensure valid input.

Basic Yes/No Question

To ask a yes/no question, use the input() function and check the answer with conditional statements:

user_input = input('Do you like pizza (yes/no): ')

if user_input.lower() == 'yes':
print('user typed yes')
elif user_input.lower() == 'no':
print('user typed no')
else:
print('Type yes or no')
  • The input() method takes user input and stores it in the variable user_input as a string.
  • The if/elif/else block checks what the user typed.
  • The user_input.lower() converts the input to lowercase, to compare to the strings yes and no regardless of the case used in the input, e.g. "YES" or "Yes" will be converted to "yes".

Using lower() for Case-Insensitive Comparisons

The lower() method converts a string to lowercase, allowing for case-insensitive checks. This helps to correctly interpret user input, even if they use capital letters:

print('YES'.lower())  # Output: 'yes'
print('Yes'.lower()) # Output: 'yes'

Handling Multiple Yes/No Variations

To accept various forms of "yes" and "no" (e.g., 'y' or 'n'), check for membership in lists using the in operator:

user_input = input('Do you like pizza (yes/no): ')

yes_choices = ['yes', 'y']
no_choices = ['no', 'n']

if user_input.lower() in yes_choices:
print('user typed yes')
elif user_input.lower() in no_choices:
print('user typed no')
else:
print('Type yes or no')
  • The in operator checks if a value is an item in the given list.
  • If the lowercase version of user input is contained in yes_choices or no_choices the corresponding message is printed.

Yes/No Input with a while Loop

To keep asking a question until the user provides a specific answer (e.g. "no"), embed the input logic in a while loop:

user_input = ''

while True:
user_input = input('Do you want to continue? yes/no: ')
if user_input.lower() == 'yes':
print('User typed yes')
continue
elif user_input.lower() == 'no':
print('User typed no')
break
else:
print('Type yes/no')
  • The while True loop keeps prompting for input.
  • If the user enters "yes", the continue statement is used to go to the next iteration.
  • If the user enters "no" , the break statement is used to exit the while loop.

1. Checking for Multiple Variations in a While Loop

To accept various forms of "yes" and "no" you can use lists with the in operator:

yes_choices = ['yes', 'y']
no_choices = ['no', 'n']

while True:
user_input = input('Do you want to continue? yes/no: ')
if user_input.lower() in yes_choices:
print('User typed yes')
continue
elif user_input.lower() in no_choices:
print('User typed no')
break
else:
print('Type yes/no')

2. Limiting Input to Only Yes/No Answers

Use a while loop to force the user to only enter valid "yes" or "no" answers:

yes_choices = ['yes', 'y']
no_choices = ['no', 'n']

while True:
user_input = input('Do you like pizza (yes/no): ')
if user_input.lower() in yes_choices:
print('user typed yes')
break
elif user_input.lower() in no_choices:
print('user typed no')
break
else:
print('Type yes or no')
continue
  • The while loop repeats until the user enters a valid option from the yes_choices or no_choices.
  • The break statement is used to exit the loop when a valid option is typed.
  • If any other option is typed, the else block runs with the continue statement, which skips the rest of the block and continues with the next iteration.