Saltar al contenidoIr al contenido
3 proyectos en Python para principiantes paso a paso
Python

3 proyectos en Python para principiantes paso a paso

Una de las mejores formas de aprender a programar es crear proyectos pequeños.

Cuando estamos empezando con Python, no hace falta construir aplicaciones muy complejas. Es mejor practicar con proyectos simples que permitan entender la lógica, los condicionales, los bucles, las listas, las funciones básicas y el manejo de errores.

En este artículo veremos tres mini proyectos en Python para principiantes:

  • Un juego de adivinar el número.
  • Un juego de piedra, papel o tijera.
  • Una calculadora simple.

1. Juego de adivinar el número en Python

El primer proyecto consiste en crear un juego donde la computadora genera un número al azar y el usuario debe intentar adivinarlo.

El programa debe indicar si el intento del usuario es mayor o menor que el número generado, hasta que consiga acertar.

Importar el módulo random

Para generar números aleatorios necesitamos importar el módulo random.

import random

Luego podemos definir un rango mínimo y máximo.

minimo = 1 maximo = 10

Generar un número aleatorio

Para generar un número entero aleatorio dentro de un rango usamos random.randint().

numero_azar = random.randint(minimo, maximo)

Este número será el que el usuario debe adivinar.

Pedir intentos al usuario

Como el usuario puede necesitar varios intentos, usamos un bucle while.

while True: intento_usuario = int(input("Introduce un número: ")) if intento_usuario > numero_azar: print(f"Te has pasado. El número es más pequeño que {intento_usuario}") elif intento_usuario < numero_azar: print(f"Te has quedado corto. El número es más grande que {intento_usuario}") else: print("Has acertado") break

El bucle se repite hasta que el usuario acierta. Cuando acierta, usamos break para salir del bucle.

Contar los intentos

Podemos mejorar el juego contando cuántos intentos necesitó el usuario.

import random minimo = 1 maximo = 10 numero_azar = random.randint(minimo, maximo) intentos = 0 while True: intento_usuario = int(input(f"Introduce un número del {minimo} al {maximo}: ")) intentos += 1 if intento_usuario > numero_azar: print(f"Te has pasado. El número es más pequeño que {intento_usuario}") elif intento_usuario < numero_azar: print(f"Te has quedado corto. El número es más grande que {intento_usuario}") else: break print(f"Has acertado. El número era {numero_azar}.") print(f"Has tardado {intentos} intentos.")

Añadir dificultad al juego

También podemos permitir que el usuario elija la dificultad.

  • Fácil: números del 1 al 10.
  • Media: números del 1 al 50.
  • Difícil: números del 1 al 100.
import random minimo = 1 dificultad = input("Elige la dificultad: f, m o d: ").lower() if dificultad == "f": maximo = 10 elif dificultad == "m": maximo = 50 elif dificultad == "d": maximo = 100 else: print("No se encontró la dificultad. Se usará fácil por defecto.") maximo = 10 numero_azar = random.randint(minimo, maximo) intentos = 0 while True: intento_usuario = int(input(f"Introduce un número del {minimo} al {maximo}: ")) intentos += 1 if intento_usuario > numero_azar: print(f"Te has pasado. El número es más pequeño que {intento_usuario}") elif intento_usuario < numero_azar: print(f"Te has quedado corto. El número es más grande que {intento_usuario}") else: break print(f"Has acertado. El número era {numero_azar}.") print(f"Has tardado {intentos} intentos.")

2. Piedra, papel o tijera en Python

El segundo proyecto consiste en crear el clásico juego de piedra, papel o tijera contra la computadora.

La computadora elegirá un movimiento aleatorio y el usuario escribirá el suyo. Después, el programa comparará ambos movimientos para determinar quién ganó.

Crear la lista de movimientos

Primero importamos random y creamos una lista con los movimientos posibles.

import random movimientos = ["piedra", "papel", "tijera"]

Elegir un movimiento aleatorio

Para elegir un elemento al azar dentro de una lista usamos random.choice().

movimiento_ia = random.choice(movimientos)

Esto selecciona piedra, papel o tijera con la misma probabilidad.

Pedir el movimiento del usuario

Luego pedimos al usuario que introduzca su movimiento.

movimiento_usuario = input("Introduce tu movimiento: piedra, papel o tijera: ").lower()

Usamos lower() para convertir el texto a minúsculas y evitar problemas si el usuario escribe alguna letra en mayúscula.

Validar el movimiento

Antes de comparar, revisamos que el movimiento sea válido.

if movimiento_usuario not in movimientos: print("El movimiento no está permitido") quit()

Comparar los movimientos

Ahora podemos comparar el movimiento del usuario con el de la computadora.

if movimiento_usuario == movimiento_ia: print("Empate") elif movimiento_usuario == "piedra" and movimiento_ia == "tijera": print("Has ganado") elif movimiento_usuario == "papel" and movimiento_ia == "piedra": print("Has ganado") elif movimiento_usuario == "tijera" and movimiento_ia == "papel": print("Has ganado") else: print("Has perdido")

Código completo de una ronda

import random movimientos = ["piedra", "papel", "tijera"] movimiento_ia = random.choice(movimientos) movimiento_usuario = input("Introduce tu movimiento: piedra, papel o tijera: ").lower() if movimiento_usuario not in movimientos: print("El movimiento no está permitido") quit() print(f"Has sacado {movimiento_usuario}") print(f"El ordenador ha sacado {movimiento_ia}") if movimiento_usuario == movimiento_ia: print("Empate") elif movimiento_usuario == "piedra" and movimiento_ia == "tijera": print("Has ganado") elif movimiento_usuario == "papel" and movimiento_ia == "piedra": print("Has ganado") elif movimiento_usuario == "tijera" and movimiento_ia == "papel": print("Has ganado") else: print("Has perdido")

Añadir sistema de puntos

Para mejorar el juego, podemos hacer que se juegue hasta que alguien llegue a tres puntos.

import random movimientos = ["piedra", "papel", "tijera"] puntos_usuario = 0 puntos_ia = 0 while puntos_usuario < 3 and puntos_ia < 3: movimiento_ia = random.choice(movimientos) movimiento_usuario = input("Introduce tu movimiento: piedra, papel o tijera: ").lower() if movimiento_usuario not in movimientos: print("El movimiento no está permitido") continue print(f"Has sacado {movimiento_usuario}") print(f"El ordenador ha sacado {movimiento_ia}") if movimiento_usuario == movimiento_ia: print("Empate") elif movimiento_usuario == "piedra" and movimiento_ia == "tijera": print("Has ganado") puntos_usuario += 1 elif movimiento_usuario == "papel" and movimiento_ia == "piedra": print("Has ganado") puntos_usuario += 1 elif movimiento_usuario == "tijera" and movimiento_ia == "papel": print("Has ganado") puntos_usuario += 1 else: print("Has perdido") puntos_ia += 1 print(f"Marcador: {puntos_usuario} - {puntos_ia}") if puntos_usuario > puntos_ia: print(f"Enhorabuena, has ganado con un resultado de {puntos_usuario}-{puntos_ia}") else: print(f"Lo siento, has perdido con un resultado de {puntos_usuario}-{puntos_ia}")

3. Calculadora simple en Python

El tercer proyecto es una calculadora básica.

La calculadora pedirá dos números y una operación. Después mostrará el resultado.

Las operaciones disponibles serán:

  • Suma.
  • Resta.
  • Multiplicación.
  • División.

Pedir los datos al usuario

Primero pedimos dos números y una operación.

numero_1 = int(input("Introduce el número 1: ")) numero_2 = int(input("Introduce el número 2: ")) operacion = input("Introduce una operación: +, -, * o /: ")

Validar la operación

Podemos crear una lista con las operaciones permitidas y usar un bucle while para obligar al usuario a introducir una operación válida.

operaciones_posibles = ["+", "-", "*", "/"] while operacion not in operaciones_posibles: operacion = input("Introduce una operación válida: +, -, * o /: ")

Calcular el resultado

Una forma tradicional sería usar condicionales.

if operacion == "+": resultado = numero_1 + numero_2 elif operacion == "-": resultado = numero_1 - numero_2 elif operacion == "*": resultado = numero_1 * numero_2 elif operacion == "/": resultado = numero_1 / numero_2

También existe la función eval(), que permite evaluar una expresión escrita como texto.

resultado = eval(f"{numero_1} {operacion} {numero_2}")

En este caso, como la operación está limitada a una lista de símbolos permitidos y los números se convierten a enteros, el ejemplo se mantiene controlado. Aun así, eval() debe usarse con cuidado y no conviene aplicarlo directamente sobre texto libre escrito por el usuario.

Manejar división entre cero

Si el usuario intenta dividir entre cero, Python mostrará un error.

Podemos manejar ese caso usando try y except.

try: resultado = eval(f"{numero_1} {operacion} {numero_2}") except ZeroDivisionError: resultado = "infinito"

Código completo de la calculadora

numero_1 = int(input("Introduce el número 1: ")) numero_2 = int(input("Introduce el número 2: ")) operacion = input("Introduce una operación: +, -, * o /: ") operaciones_posibles = ["+", "-", "*", "/"] while operacion not in operaciones_posibles: operacion = input("Introduce una operación válida: +, -, * o /: ") try: resultado = eval(f"{numero_1} {operacion} {numero_2}") except ZeroDivisionError: resultado = "infinito" print(f"{numero_1} {operacion} {numero_2} = {resultado}")

Cómo mejorar estos proyectos

Estos proyectos son sencillos, pero se pueden mejorar de muchas formas.

Mejoras para adivinar el número

  • Agregar más niveles de dificultad.
  • Limitar la cantidad de intentos.
  • Guardar el mejor récord.
  • Permitir jugar otra partida al terminar.

Mejoras para piedra, papel o tijera

  • Agregar más rondas.
  • Mostrar estadísticas de victorias y derrotas.
  • Evitar que la computadora repita muchas veces el mismo movimiento.
  • Crear una versión con interfaz gráfica.

Mejoras para la calculadora

  • Agregar más operaciones.
  • Permitir números decimales usando float.
  • Permitir varias operaciones seguidas.
  • Crear una interfaz visual.
  • Evitar eval() y usar condicionales para mayor seguridad.

Consejo para aprender Python con proyectos

Para aprender mejor, no conviene limitarse a copiar código.

Una buena forma de practicar es mirar la idea del proyecto, intentar hacerlo por cuenta propia y volver a revisar el ejemplo solo cuando sea necesario.

Enfrentarse a los errores y buscar soluciones ayuda mucho más que seguir tutoriales sin intentar resolver nada por uno mismo.

Conclusión

Crear proyectos pequeños es una excelente manera de aprender Python.

El juego de adivinar el número permite practicar números aleatorios, bucles, condicionales y entradas del usuario.

Piedra, papel o tijera ayuda a trabajar con listas, random.choice(), validaciones y sistemas de puntos.

La calculadora permite practicar operaciones, validación de datos, f-strings y manejo de errores con try y except.

Estos tres proyectos son simples, pero sirven como base para ganar confianza y empezar a crear programas más completos en Python.

Compartir
Escrito por
deybi
Soy un joven dominicano dedicado a la creación de páginas web, con un proyecto de vida claro y una visión enfocada en el crecimiento, la disciplina y el trabajo constante. Me esfuerzo cada día...

Deja un comentario