Number Guessing Game in Python using Binary Search

01 Jun, 2021
In the number guessing game, the user selects a number within a defined range and then the program guesses the number. If the number guessed is wrong then the user tells the program that is the actual number is greater than the guessed number or not. Similarly, the program again guesses the number until the actual number is not guessed.Approach: The idea is to use binary search, where in each step the half portion of the search space is reduced. Below is the illustration of the approach: 
Initialize the start and end range of the number guessing.
Guess the number as middle of the search space. That is  
If the number guessed is correct, then terminate the program.
Otherwise, Ask the user that guessed number is less than the guessed number or not. If yes then reduce the search space accordingly.
Below is the implementation of the above approach: 
Python
# Python implementation for the# number guessing using# Binary Search # Global Arguments for playing gameargs = ["N", "N", "Y"]index = -1 # Temporary function for taking# input from the local arguments listdef input():    global index, args;    index += 1    return args[index] # Function to guess the number in# a defined range of the numberdef guessNumber(startRange, endRange):    if startRange > endRange:        return True         # Middle of the range    mid = (startRange + endRange)//2         # Asking user about the    # actual number    print("Is the number is ",        mid, "?", end = " ")    user = input()    print(user)         # Condition to check if the    # guessed number is actual number    if user == "Y" or user == "y":        print("Voila ! Successfully Guessed Number.")        return False             # Condition to check if the    # guessed number is not correct    elif user == "N" or user == "n":        print("Actual number is greater than",\                        mid, "?", end = " ")        user = input()        print(user)        if user == "Y" or user == "y":            return guessNumber(mid+1, endRange)        elif user == "N" or user == "n":            return guessNumber(startRange, mid-1)        else:            print("Invalid Input. Print 'Y'/'N'")            return guessNumber(startRange, endRange)         # Condition to check if the user    # input was invalid    else:        print("Invalid Input. Print 'Y'/'N' ")        return guessNumber(startRange, endRange) # Driver Codeif __name__ == "__main__":    print("Number Guessing game in python")    startRange = 1    endRange = 10    print("Guess a number in range (1 to 10)")         out = guessNumber(startRange, endRange)         if out:        print("Bad Choices")
N
N
Y
 
Number Guessing game in python
Guess a number in range (1 to 10)
Is the number is  5 ? N
Actual number is greater than 5 ? N
Is the number is  2 ? Y
Voila ! Successfully Guessed Number.
 
surinderdawra388
Divide and Conquer
Mathematical
Project
Python
Python Programs
Recursion
Searching
Searching
Mathematical
Recursion
Divide and Conquer
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Count number of occurrences (or frequency) in a sorted array
Find a peak element
Median of two sorted arrays of same size
Allocate minimum number of pages
Quick Sort vs Merge Sort
Program for Fibonacci numbers
Set in C++ Standard Template Library (STL)
Write a program to print all permutations of a given string
C++ Data Types
Merge two sorted arrays