Juego de adivinanzas de números en Python usando búsqueda binaria

En el juego de adivinanzas de números, el usuario selecciona un número dentro de un rango definido y luego el programa adivina el número. Si el número adivinado es incorrecto, el usuario le dice al programa si el número real es mayor que el número adivinado o no. De manera similar, el programa vuelve a adivinar el número hasta que no se adivina el número real.
Enfoque: La idea es utilizar la búsqueda binaria , donde en cada paso se reduce la mitad del espacio de búsqueda. A continuación se muestra la ilustración del enfoque:
 

  • Inicialice el rango inicial y final de la adivinación de números.
  • Adivina el número en medio del espacio de búsqueda. Eso es 
    Número = \frac{rango inicial + rango final}{2}
     
  • Si el número adivinado es correcto, termine el programa.
  • De lo contrario, pregunte al usuario si el número adivinado es menor que el número adivinado o no. En caso afirmativo, reduzca el espacio de búsqueda en consecuencia.

A continuación se muestra la implementación del enfoque anterior:
 

Python

# Python implementation for the
# number guessing using
# Binary Search
 
# Global Arguments for playing game
args = ["N", "N", "Y"]
index = -1
 
# Temporary function for taking
# input from the local arguments list
def input():
    global index, args;
    index += 1
    return args[index]
 
# Function to guess the number in
# a defined range of the number
def 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 Code
if __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")
Entradas: 

N
N
Y

 

Salidas: 

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.

 

Publicación traducida automáticamente

Artículo escrito por mynameisshrish y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *