Hola hacketones! En este capítulo de TryHackMe – Python: Simple Demo Exploraremos cómo se ve un programa básico de Python.

Python para Principiantes
Aprender Python suele comenzar con pequeños proyectos que permiten entender cómo funcionan las piezas básicas de un programa. Uno de los ejercicios más clásicos consiste en crear un juego simple donde el sistema genera un número secreto y el usuario intenta adivinarlo. Aunque parece sencillo, este tipo de proyecto introduce varios conceptos fundamentales de programación que forman la base de cualquier aplicación más compleja.
Todo comienza con las variables y los tipos de datos. En un juego de adivinanza, el programa necesita almacenar información clave como el número secreto, los intentos realizados y el valor que el usuario propone. Las variables funcionan como contenedores donde se guardan estos datos mientras el programa se ejecuta. Gracias a ellas, el código puede comparar valores, actualizar información y mantener el estado del juego durante cada intento.
Otro componente esencial son las estructuras condicionales. Instrucciones como if, elif y else permiten que el programa tome decisiones basadas en ciertas condiciones. En este caso, cada vez que el usuario introduce un número, el programa compara ese valor con el número secreto. Dependiendo del resultado, puede indicar si el número es demasiado alto, demasiado bajo o si finalmente se ha acertado.
Para que el juego continúe hasta que el jugador encuentre la respuesta correcta, se utilizan estructuras de repetición. El bucle while permite ejecutar un bloque de código una y otra vez mientras una condición se mantenga verdadera. De esta manera, el programa puede seguir pidiendo intentos al usuario hasta que el número correcto sea descubierto.

Construyendo tu Primer Juego de Adivinanza
Antes de comenzar el juego, el programa debe generar el número secreto. Esto suele hacerse utilizando funciones de generación aleatoria que producen un número dentro de un rango específico. Este valor se mantiene oculto mientras el jugador intenta descubrirlo, lo que introduce el elemento de desafío dentro del juego.
Cuando el usuario escribe su respuesta, el programa recibe esa información como texto. Para poder compararla con el número secreto, primero debe convertirla a un valor numérico utilizando funciones de conversión como int(). Este paso es importante porque los programas necesitan trabajar con tipos de datos correctos para realizar comparaciones matemáticas.
Durante cada intento, el programa evalúa la respuesta del usuario y ofrece retroalimentación inmediata. Si el número es mayor o menor que el valor correcto, el sistema proporciona una pista para orientar el siguiente intento. Este ciclo de interacción entre el usuario y el programa continúa hasta que finalmente se alcanza la respuesta correcta.
A lo largo de este pequeño proyecto aparecen también funciones clave del lenguaje como print(), que permite mostrar mensajes en pantalla, e input(), que detiene la ejecución del programa para recibir datos del usuario. Incluso operadores de comparación como != ayudan a verificar si dos valores son distintos, lo que resulta útil para mantener el bucle activo hasta que el número correcto sea encontrado.
Este tipo de ejercicio demuestra cómo conceptos simples pueden combinarse para crear una aplicación interactiva. Lo que comienza como un pequeño juego termina siendo una introducción práctica a la lógica de programación, al manejo de datos y a la interacción entre usuario y sistema, habilidades esenciales para cualquier persona que quiera avanzar en el desarrollo de software o incluso en áreas como la automatización y la ciberseguridad.

Conceptos y Funciones de Python en el Juego de Adivinanza
| Concepto o Función | Descripción | Ejemplo de Código | Uso en el Proyecto | Tipo de Dato o Estructura |
| random.randint() | Método de la biblioteca random que genera un número entero aleatorio entre los límites especificados (inclusive). | random.randint(1, 20) | Se utiliza en v1, v2 y v3 para que la computadora elija el número secreto entre 1 y 20 al inicio del juego. | Entero (int) |
| input() | Función que solicita una entrada de datos al usuario a través del teclado y la devuelve como una cadena. | text = input(«Take a guess: «) | Se usa en v1, v2 y v3 para capturar la suposición del jugador. | Cadena de texto (string) |
| int() | Función que convierte un valor (como una cadena de texto numérica) en un número entero. | guess = int(text) | Fundamental en v1, v2 y v3 para transformar la entrada del usuario y poder realizar comparaciones matemáticas. | Entero (int) |
| print() | Función integrada de Python utilizada para mostrar mensajes informativos o resultados en la pantalla del usuario. | print(«I’m thinking of a number between 1 and 20») | Presente en todas las versiones para dar instrucciones al usuario y mostrar si su intento fue alto, bajo o correcto. | Cadena de texto (string) |
| if / elif / else | Estructuras de control condicional que permiten al programa tomar decisiones basadas en si una condición es verdadera o falsa. | if guess < secret: print(«Too low») elif guess > secret: print(«Too high») else: print(«You got it») | Introducido en v2 para comparar la suposición con el número secreto y dar pistas al usuario. | Estructura de control |
| while | Estructura de bucle que repite un bloque de código mientras se cumpla una condición específica. | while guess != secret: | Implementado en v3 para permitir que el usuario siga adivinando hasta que encuentre el número secreto. | Bucle (Iteración) |
| Variables (secret, guess, tries) | Espacios de memoria reservados para almacenar datos que pueden cambiar durante la ejecución del programa. | tries = 0 | secret guarda el objetivo, guess el intento actual y tries cuenta el número de intentos realizados. | Entero (int) |

Introducción
En las dos primeras salas, Representación de Datos y Codificación de Datos , aprendimos cómo las computadoras entienden números, caracteres, colores e incluso emojis. En esta sala, exploraremos uno de los lenguajes de programación más populares y fáciles de usar: Python.
Quizás hayas oído hablar del lenguaje de programación Python en numerosas ocasiones. Python es un lenguaje de programación de alto nivel y propósito general. Por alto nivel , nos referimos a que oculta la mayoría de los detalles de implementación; propósito general significa que puedes usar Python en una amplia variedad de escenarios, desde aplicaciones web y scripts de automatización hasta ciencia de datos y aprendizaje automático.

En esta sala, crearemos un juego de «Adivina el Número». Nuestro plan será el siguiente:
- La computadora elige en secreto un número entre 1 y 20.
- El usuario sigue adivinando hasta que acierta.
- La computadora le dice al usuario si su estimación es demasiado baja o demasiado alta.
A continuación se muestra un ejemplo de sesión que ejecuta el programa:

Objetivos de aprendizaje
- Aprenda sobre las variables de Python
- Comprender cómo se utilizan las declaraciones condicionales
- Ver la iteración (bucle) en acción
Prerrequisitos
Variables
Puede continuar iniciando la máquina virtual adjunta haciendo clic en el botón «Iniciar máquina» (mostrado arriba). Visual Studio Code debería abrirse automáticamente, como se muestra en la captura de pantalla a continuación.

El programa comienza eligiendo un número secreto aleatorio entre 1 y 20. Luego, el usuario intentará adivinar uno tras otro hasta acertar. Este método requiere dos variables: secret y guess. También podemos registrar el número de intentos que el usuario tardó en encontrar el número; para ello, usaremos la variable tries.

Python ofrece el random.randint()método que devuelve un entero aleatorio dentro de los límites especificados. Por ejemplo, random.randint(1, 20)devuelve un número aleatorio entre 1 y 20. Dado que el usuario no ha realizado ningún intento, lo establecemos tries en 0; además, lo establecemos guess en un valor fuera del rango válido. Para indicar al usuario que el programa ha seleccionado un número, usamos print()el método de Python para mostrar un mensaje informativo en pantalla. A continuación, mostramos el script de Python actual:

Este fragmento de código logra lo siguiente:
- Utilice el random.randint()método de random para elegir un número aleatorio entre 1 y 20 y guardarlo en secret.
- Crea dos variables, tries y guess, y las establece en 0.
- Muestra un mensaje en la pantalla para informar al usuario que se ha elegido un número.
Con nuestras variables listas, solicitamos al usuario que adivine y las configuramos gues ssegún corresponda. Comenzamos guardando la entrada del usuario en text temporal y luego usamos Python int() para convertirla a un entero. Además, necesitamos incrementar el valor tries cada vez que el usuario adivine.

Hasta ahora, nuestro programa hace lo siguiente:
- Elija un número aleatorio entre 1y 20y guárdelo en secret.
- Pídale al usuario que haga una suposición, la convierta en un número entero y la guarde en formato guess.
- Incrementar tries en 1.
Para comprobar si el usuario hizo una suposición correcta, deberíamos poder comparar varios casos; esto requiere declaraciones condicionales y operadores de comparación.

El borrador incompleto
En esta tarea, creamos un programa básico que puedes probar y editar en la máquina virtual adjunta. Aunque este programa elige un número aleatorio y lee la entrada del usuario, no los compara, lo que lo hace prácticamente inútil como juego. En la siguiente tarea, mejoramos este programa para que ofrezca al usuario información sobre cómo se guesscom para con el número secret. El programa a continuación se guarda guess_v1.py en /home/ubuntu/Python-Demo

Responda las preguntas a continuación
¿Cómo se llama la función que usamos para mostrar texto en la pantalla?
print()
¿Cuál es el nombre de la función que usamos para convertir la entrada del usuario en un número entero?
int()
Declaraciones condicionales
Antes de comenzar, tenga en cuenta que puede descargar el archivo zip adjunto. Incluye todas las versiones del programa presentes en la máquina virtual de destino . Este archivo le permite revisar la evolución del proyecto, comparar implementaciones o probar cada versión de forma independiente en su máquina local. Tener todas las iteraciones en un solo paquete le permitirá trabajar de forma más eficiente.

A continuación, comparamos la del usuario guess con secret y damos una pista útil: si está fuera de rango, es demasiado bajo, demasiado alto o si lo acertó. Es como preguntarnos: «¿El número es menor que 1 o mayor que 20?». Si la respuesta es sí, le decimos al usuario que el número está fuera de rango . Si la respuesta es no, planteamos una segunda pregunta: «¿La suposición del usuario es menor que el número secreto?». Si la respuesta es sí, le decimos al usuario que la suposición es demasiado baja . Reformulemos esto en pseudocódigo, es decir, en inglés, que es más cercano al lenguaje de programación.

- Si el resultado es menor que 1 o mayor que 20, escriba “Fuera de rango”. (Si no es así, continúe con el siguiente paso).
- De lo contrario, si la suposición es menor que el número secreto, escriba “Demasiado bajo”. (Si este no es el caso, continúe con el siguiente paso).
- De lo contrario, si la suposición es mayor que el número secreto, escriba «Demasiado alto». (Si este no es el caso, continúe con el siguiente paso).
- De lo contrario, imprime «Lo tienes».

Al reflexionar sobre los pasos anteriores, es lógico que si la suposición no es menor ni mayor que el número secreto, sea igual a este. En programación, siempre que la condición después del » if » no sea verdadera (como if CONDITION: en Python), el programa verifica la condición después del » else if » (como elif CONDITION: en Python), y si también es falsa, verifica el siguiente «else if». Si no quedan más «else if», el programa ejecuta el » else » final (como else: en Python). Convirtamos el pseudocódigo anterior a código Python funcional.

En esta implementación, comparar el usuario guesscon el elegido secretdará lugar a varios casos:
- El usuario realiza una operación guess fuera de los límites permitidos, es decir, 1 y 20
- El usuario guess es menor que secret
- El usuario guess es mayor que secret
- El usuario guess tiene razón
Si lo anterior parece confuso, considere los siguientes ejemplos numéricos.

Ejemplo numérico 1
Suponemos que el número secreto es 10. Si el usuario introduce 30, la primera if condición se evaluará como verdadera y Python ejecutará la parte posterior if guess < 1 or guess > 20:e imprimirá «Ese número está fuera de rango. Inténtalo de nuevo».
Ejemplo numérico 2
Suponemos que el número secreto es 10. Supongamos que el usuario ingresa 5, la primera if condición se evaluará como falsa porque 5 no es menor que 1 ni mayor que 20. Python verificará la condición que sigue a la primera elif y se evaluará como verdadera porque 5 es de hecho menor que 10. En consecuencia, el programa imprimirá «Demasiado bajo, inténtalo de nuevo».
Ejemplo numérico 3
Suponemos que el número secreto es 10. Supongamos que el usuario ingresa 15, la primera if condición se evaluará como falsa porque 15 no es menor que 1 ni mayor que 20. El programa verificará la condición que sigue a la primera elif y también se evaluará como falsa porque 15 no es menor que 10. El programa verificará la condición que sigue a la segunda elif, y esta se evaluará como verdadera, porque 15 es mayor que 10. Como resultado, el programa mostrará «Demasiado alto, inténtalo de nuevo».
El primer borrador
En esta tarea, creamos un programa funcional que puedes probar y editar en la máquina virtual adjunta. La principal limitación es que solo ofrece una oportunidad. En la siguiente tarea, lo actualizamos para permitir al usuario un número infinito de intentos para acertar. El programa a continuación se guarda en guess_v2.pyel /home/ubuntu/Python-Demo directorio.

Responda las preguntas a continuación
¿Cómo escribe Python “else if”?
elif
¿Qué mostrará el programa si la entrada del usuario es 50?
That number is out of range. Try again.
Iteraciones
Es muy difícil adivinar el número con una sola oportunidad. Para que este juego sea más interesante, debería ofrecer al usuario al menos algunas oportunidades. Seremos muy tolerantes y permitiremos al usuario tantos intentos como necesite para encontrar el número secreto. Para darle más de una oportunidad, necesitamos usar nuestra arma secreta: ¡ los bucles ! En programación, los bucles, o más formalmente, las iteraciones , nos permiten ejecutar las mismas líneas de código varias veces. Dicho de forma más formal, podemos iterar sobre el mismo bloque de código mientras se cumpla una condición específica.

Veamos algunos ejemplos de iteración en nuestra vida diaria. Imagina que quieres comprar una camiseta nueva: visitarás una tienda tras otra hasta encontrar una que te quede bien. La condición es encontrar una camiseta adecuada. Imagina otro ejemplo: buscas una plaza de aparcamiento vacía en un aparcamiento enorme. Revisarás una fila de coches tras otra hasta que finalmente encuentres una. La condición es encontrar una plaza de aparcamiento adecuada.

Volviendo a nuestro juego, repetiremos el código que escribimos en la Tarea 3 hasta que el usuario guess coincida con el secret número. En Python, «no es igual a» se escribe como !=. En otras palabras, la condición » guess no es igual a secret» se escribe como guess != secret. Para escribir esto como un while, usamos la forma while CONDITION:; en nuestro caso, es while guess != secret:.
Peguemos el código de la Tarea 3 en el cuerpo de nuestro while.

El código anterior se ejecutará de la siguiente manera. Primero, Python comprobará la condición después del while; si es verdadera, ejecutará todas las líneas sangradas. Si es falsa, terminará.
Ejemplo numérico 1
Suponemos que el número secreto es 10. En la primera ejecución, la suposición es 0. While se evaluará como verdadera porque 10 no es igual a 0. El programa le pedirá al usuario que «Adivine» y continuará a partir de allí.
Ejemplo numérico 2
Suponemos que el número secreto es 10. Si el usuario introdujo 5 antes, significa que no adivinó el número en el intento anterior. La While se evaluará como verdadera porque 10 no es igual a 5. El programa le dará al usuario otra oportunidad y le pedirá que intente adivinar.
Ejemplo numérico 3
Suponemos que el número secreto es 10. Si el usuario introdujo 10 antes, significa que acertó el número en el intento anterior. Veamos si el programa le pide que lo intente de nuevo. While se evaluará como falso porque 10 es igual a 10; en otras palabras, 10 != 10es falso. El bloque de código sangrado dentro deWhile ya no se ejecutará.
El segundo borrador
En esta tarea, hemos completado la codificación de nuestro juego. Puedes probarlo tú mismo y editarlo en la máquina virtual adjunta. El programa a continuación está guardado en guess_v3.py el directorio /home/ubuntu/Python-Demo.

Responda las preguntas a continuación
¿Qué tipo de bucle utiliza este programa?
while
¿Qué mostrará el programa si el usuario acierta en 3 intentos?
You got it in 3 tries!

Conclusión
En esta sala cubrimos tres pilares clave en los lenguajes de programación imperativos:
- Variables
- Condicionales con if y else
- Bucles con while
Si esta es tu primera experiencia con Python, no te preocupes si no puedes escribir un programa similar. Aprender lenguajes de programación requiere práctica, y aunque ya puedes entender y explicar este programa, la práctica es indispensable para escribir algo similar. Te recomendamos encarecidamente que compares el código de esta sala con el de JavaScript: Demostración Simple (próximamente); esto te dará una buena perspectiva sobre cómo se diseñan y escriben los diferentes lenguajes de programación modernos.

En la siguiente sala, JavaScript: Demostración Simple (próximamente), analizaremos un programa de ejemplo escrito con JavaScript. JavaScript se ejecuta en el navegador web para que los sitios web sean más interactivos; además, impulsa un número cada vez mayor de aplicaciones web gracias a Node.js. Puedes explorarlo en la siguiente sala.
Sigan entrenando, Hacketones, Nos vemos en el próximo laboratorio!!!
