python

Python – Hacer que la computadora adivine un número

El día de hoy vamos a resolver un ejercicio en Python en donde el usuario va a pensar un número y el programa o la computadora va a adivinarlo.

Para ello vamos a usar la búsqueda binaria: vamos a hacer que la computadora piense en un número y se lo muestre al usuario. Luego el usuario le debe decir si acertó, y en caso de que no, le debe decir si es menor o mayor.

Lo interesante aquí es que la computadora adivinará en el menor número de intentos posibles, sin confiar en la suerte.

Explicación del algoritmo

Como te dije, vamos a usar la búsqueda binaria. Obviamente el número que va a pensar el usuario estará dentro de un límite; así que se va a calcular el número intermedio y en caso de no acertar entonces el rango se va a acortar dividiéndolo entre 2.

Digamos que va a ir dividiendo sus posibilidades entre 2. Por ejemplo aquí yo pensé en el número 80 con un rango de 1 a 100 y esta fue la salida:

See the gist on github.

Como puedes ver, va dividiendo entre 2 la cantidad de números en los que pudiste pensar. Así es como usamos la búsqueda binaria para adivinar el número que el usuario pensó.

Adivinar número con Python

Ya expliqué el algoritmo, ahora veamos el código. Simplemente vamos a definir el rango y a partir de él calcular el número que se encuentra a la mitad. El doble símbolo de división // es para dividir y redondear al entero anterior más cercano.

See the gist on github.

Hacemos un ciclo while que se va a ejecutar mientras la computadora (y el programa en Python) no adivinen el número en el que pensó el usuario.

Dentro del ciclo se va a calcular el número intermedio y preguntar si acertó; en caso de que no entonces se va a preguntar si el número en el que el usuario pensó es menor o mayor, y a partir de ello el rango se acortará a la mitad.

También se comprueba si el número está fuera del rango. Obviamente tú puedes modificar el rango según tus necesidades; entre más corto sea, más rápido adivinará la computadora.

Me parece que el número de intentos que el programa tomará será aproximadamente el logaritmo base 2 de la cantidad de números dentro del rango.

Por ejemplo: si son 100 números, el programa tomará un máximo de 7 intentos (y el log2(100) es 6.64)… pero eso se lo dejo a alguien que sepa más sobre matemáticas.

Para terminar te dejo con más tutoriales de Python en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

2 horas hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

18 horas hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

19 horas hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

2 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

1 semana hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

1 semana hace

Esta web usa cookies.