Ask the user a question using raw_input() and looking something like this:
QUESTION [Y/n/q]
...validate...
See also: Recipe 577058 (query yes/no), Recipe 577096 (query custom answers), Recipe 577098 (query long), Recipe 577099 (query)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | def query_yes_no_quit(question, default="yes"):
"""Ask a yes/no/quit question via raw_input() and return their answer.
"question" is a string that is presented to the user.
"default" is the presumed answer if the user just hits <Enter>.
It must be "yes" (the default), "no", "quit" or None (meaning
an answer is required of the user).
The "answer" return value is one of "yes", "no" or "quit".
"""
valid = {"yes":"yes", "y":"yes", "ye":"yes",
"no":"no", "n":"no",
"quit":"quit", "qui":"quit", "qu":"quit", "q":"quit"}
if default == None:
prompt = " [y/n/q] "
elif default == "yes":
prompt = " [Y/n/q] "
elif default == "no":
prompt = " [y/N/q] "
elif default == "quit":
prompt = " [y/n/Q] "
else:
raise ValueError("invalid default answer: '%s'" % default)
while 1:
sys.stdout.write(question + prompt)
choice = raw_input().lower()
if default is not None and choice == '':
return default
elif choice in valid.keys():
return valid[choice]
else:
sys.stdout.write("Please respond with 'yes', 'no' or 'quit'.\n")
|