Juego de adivinanzas Python

Muhammad Maisam Abbas 21 junio 2023
  1. Mecánica del juego de adivinanzas
  2. Juego de adivinanzas de números con el módulo random en Python
Juego de adivinanzas Python

Este tutorial demostrará el proceso de desarrollo de un juego simple de adivinanzas de números en Python.

Mecánica del juego de adivinanzas

Estamos tratando de desarrollar un juego que tome el límite superior e inferior del usuario, genere un número aleatorio en ese rango, le pida al usuario que adivine el número y cuente cuántos caminos toma el usuario para llegar a la conjetura correcta. Este juego solo estará basado en CLI.

Juego de adivinanzas de números con el módulo random en Python

Lo primero que hace nuestro programa es tomar los límites superior e inferior del usuario como entradas. Esto se puede hacer con el método input() incorporado de Python.

El método input() lee la entrada de la línea de comando y la devuelve como una cadena. El único problema aquí es que queremos ingresar valores enteros.

Podemos envolver nuestro método input() dentro del método integrado int() para resolver ese problema. Esto convertirá la cadena de entrada devuelta por el método input() en un valor entero.

El siguiente ejemplo muestra una implementación funcional de este paso.

Código:

lower_limit = int(input("Please enter the Lower Limit"))
upper_limit = int(input("Please enter the Upper Limit"))
print("Lower Limit =", lower_limit)
print("Upper Limit =", upper_limit)

Producción :

Please enter the Lower Limit0
Please enter the Upper Limit99
Lower Limit = 0
Upper Limit = 99

Podemos escribir el mensaje que queremos mostrar al usuario mientras ingresamos los datos dentro del método input() como parámetro de entrada. Como tenemos los límites inferior y superior, podemos escribir fácilmente algún código para generar un número entero aleatorio dentro de ese rango.

Podemos usar el módulo aleatorio incorporado en Python para realizar esta tarea llamada método random.randint(). Toma el límite inferior y el límite superior como parámetros de entrada y devuelve un número entero dentro de ese rango.

El siguiente ejemplo de código muestra cómo generar un número entero aleatorio dentro de un rango específico utilizando el método random.randint() de Python.

Código:

import random

number = random.randint(lower_limit, upper_limit)
print("Random Number =", number)

Producción :

Random Number = 47

Hasta ahora, hemos tomado los límites del usuario y generado un número entero aleatorio dentro de esos límites. Tenemos que tomar la conjetura del usuario y compararla con el número generado aleatoriamente.

Esto se puede lograr combinando el método input() con un simple bloque if/else.

Código:

guess = int(input("Guess the number"))
if guess == number:
    print("Yes, You are correct")
else:
    print("Incorrect Answer!")

Producción :

Guess the number15
Incorrect Answer!

El único problema aquí es que no nos da pistas para adivinar el número correcto. Nos dice si tenemos razón o no, lo cual no es una forma divertida de jugar un juego.

Podemos mejorar eso colocando varias declaraciones if y ejecutándolas dentro de un ciclo hasta que el usuario adivine el número correcto.

Código:

win = False
while win != True:
    guess = int(input("Guess the number"))
    if guess == number:
        win = True
        print("Yes, You are correct")
    elif guess < number:
        print("You are a little shorter")
    else:
        print("You are a little larger")

Producción :

Guess the number5
You are a little shorter
Guess the number95
You are a little larger
Guess the number47
Yes, You are correct

Usamos un bucle while porque no sabemos cuántos intentos hará el usuario para obtener la respuesta correcta. Creamos una variable indicadora ganar que le dice al ciclo while cuándo detenerse, y la variable ganar se establece en False hasta que el usuario adivine el número correcto.

Nuestro juego de adivinanzas de números está casi completo, y lo único que falta es el contador de puntuación que cuenta la cantidad de intentos que un usuario tomó para llegar a la respuesta correcta. Podemos modificar nuestro código anterior y usar una variable de contador en el ciclo.

El siguiente fragmento de código muestra cómo podemos agregar un mecanismo de puntuación a nuestro juego de adivinanzas.

Código:

win = False
steps = 0
while win != True:
    guess = int(input("Guess the number"))
    steps += 1
    if guess == number:
        win = True
        print("Yes, You are correct")
        print("Number of Trails =", steps)
    elif guess < number:
        print("You are a little shorter")
    else:
        print("You are a little larger")

Producción :

Guess the number22
You are a little shorter
Guess the number44
You are a little shorter
Guess the number47
Yes, You are correct
Number of Trails = 3

Agregamos un contador de pasos que realiza un seguimiento de la cantidad de intentos que el usuario realizó para terminar el juego.

Código:

import random

lower_limit = int(input("Please enter the Lower Limit"))
upper_limit = int(input("Please enter the Upper Limit"))

number = random.randint(lower_limit, upper_limit)

win = False
steps = 0
while win != True:
    guess = int(input("Guess the number"))
    steps += 1
    if guess == number:
        win = True
        print("Yes, You are correct")
        print("Number of Trails =", steps)
    elif guess < number:
        print("You are a little shorter")
    else:
        print("You are a little larger")

Producción :

Please enter the Lower Limit0
Please enter the Upper Limit10
Guess the number5
You are a little larger
Guess the number2
You are a little shorter
Guess the number3
You are a little shorter
Guess the number4
Yes, You are correct
Number of Trails = 4

El resultado muestra que el juego solo se ejecuta en una pasada. No permite que el usuario siga jugando hasta que se aburra.

Podemos encerrar todo nuestro programa dentro de otro ciclo que ejecuta el juego repetidamente hasta que el usuario quiera salir del juego.

Código completo:

import random

play = True
while play == True:
    lower_limit = int(input("Please enter the Lower Limit"))
    upper_limit = int(input("Please enter the Upper Limit"))

    number = random.randint(lower_limit, upper_limit)

    win = False
    steps = 0
    while win != True:
        guess = int(input("Guess the number"))
        steps += 1
        if guess == number:
            win = True
            print("Yes, You are correct")
            print("Number of Trails =", steps)
        elif guess < number:
            print("You are a little shorter")
        else:
            print("You are a little larger")

    replay = int(input("Enter -1 to replay the game."))
    if replay != -1:
        play = False

Producción :

Please enter the Lower Limit1
Please enter the Upper Limit3
Guess the number2
You are a little larger
Guess the number1
Yes, You are correct
Number of Trails = 2
Enter -1 to replay the game.-1
Please enter the Lower Limit1
Please enter the Upper Limit3
Guess the number2
You are a little larger
Guess the number1
Yes, You are correct
Number of Trails = 2
Enter -1 to replay the game.0

Creamos otra variable indicadora, reproducir, que le dice a nuestro bucle externo o principal cuándo detener su ejecución. Si el usuario proporciona cualquier número que no sea -1, el bucle externo detendrá la ejecución, asumiendo que el usuario se ha aburrido de jugar este juego repetidamente.

Es un juego muy simple de implementar. Solo importamos el módulo random para generar un número aleatorio en nuestro código.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn