def get_input(turns, asked_about): x = '' while True: x = raw_input( str(turns) + ': Is your number less than, ' 'equal to, or greater than ' + str(asked_about) + '? Answer less, equal, or greater, or quit to quit. ') if x not in ['less', 'equal', 'greater', 'quit']: print 'Answer less, equal, greater, or quit next time.' else: break return x def check_not_done(lower, upper): if lower + 1 == upper: print 'You\'re a liar! You said that the number ' \ 'was greater than', lower, 'but less than',\ str(upper) + ', but that\'s impossible!' return False elif lower + 2 == upper: print 'I know your number! It is', str(lower + 1) + '!' return False else: return True def ask(lower, upper, turns): asked_about = (lower + upper) / 2 status = get_input(turns, asked_about) if status == 'less': return lower, asked_about, turns + 1 elif status == 'greater': return asked_about, upper, turns + 1 elif status == 'equal': print('I guessed your number!') exit() elif status == 'quit': print('Quitting...') exit() def main(): print 'Ten Questions' print 'In this game, you will think of a number between 1 ' \ 'and 1000 and I will guess it by asking at most ten ' \ 'questions about it.' lower, upper, turns = 0, 1001, 1 while check_not_done(lower, upper): lower, upper, turns = ask(lower, upper, turns) main()