Python para pensadores

Taller diseñado con el corazón de un docente y la mente de un programador.

Reto "Tipo de jugador"

Análisis del Problema

Vamos a crear un programa en Python que clasifique a los jugadores según las horas que dedican a videojuegos por semana. Este es un problema perfecto para aplicar los 4 pilares del pensamiento computacional:

1. Descomposición

Dividimos el problema en partes más pequeñas y manejables: entrada de datos, validación, clasificación y salida de resultados.

2. Reconocimiento de patrones

Identificamos que la clasificación sigue un patrón de rangos numéricos y que la validación de entrada sigue un patrón repetitivo.

3. Abstracción

Nos centramos en lo esencial: transformar un número (horas) en una categoría, ignorando detalles innecesarios.

4. Algoritmos

Diseñamos una serie de pasos lógicos que resuelven el problema de manera eficiente y comprensible.

Categorías de Jugador

Jugador Casual

Menos de 5 horas por semana

Jugador Frecuente

Entre 5 y 15 horas por semana

Gamer Pro

Más de 15 horas por semana

Solución en Python

Aquí está el código completo que resuelve el problema. Está bien organizado y comentado para facilitar su comprensión:

# Programa para clasificar jugadores según horas de juego
# Taller "Python para pensadores" - Reto "Tipo de jugador"

# Mostrar mensaje de bienvenida
print("=========================================")
print("       CLASIFICADOR DE TIPO DE JUGADOR")
print("=========================================")
print("Este programa te clasificará según las horas")
print("que juegas videojuegos a la semana.")
print()

# Variable para controlar si el usuario quiere continuar
continuar = "si"

# Ciclo principal del programa
while continuar == "si":
    
    # Pedir al usuario que ingrese las horas de juego
    print("Por favor, ingresa cuántas horas juegas videojuegos a la semana:")
    
    # Validar que la entrada sea un número válido
    entrada_valida = False
    
    while not entrada_valida:
        horas_texto = input(">>> ")
        
        # Verificar que se haya ingresado algo
        if horas_texto == "":
            print("Debes ingresar un número. Intenta nuevamente:")
            continue
        
        # Verificar que sea un número
        es_numero = True
        
        # Revisar cada caracter para asegurarnos que sea un número
        for caracter in horas_texto:
            if caracter < '0' or caracter > '9':
                es_numero = False
                break
        
        if not es_numero:
            print("¡Error! Debes ingresar un número entero. Intenta nuevamente:")
        else:
            # Convertir el texto a número
            horas = int(horas_texto)
            
            # Verificar que sea un número positivo
            if horas < 0:
                print("¡Error! No puedes jugar horas negativas. Intenta nuevamente:")
            else:
                entrada_valida = True
    
    # Clasificar al jugador según las horas ingresadas
    print()
    print("=========================================")
    print("            RESULTADO")
    print("=========================================")
    
    if horas < 5:
        # Menos de 5 horas: Jugador casual
        print("Juegas", horas, "horas a la semana.")
        print("Tu clasificación es: JUGADOR CASUAL")
        print("¡Disfrutas de los videojuegos sin que dominen tu tiempo!")
    
    elif horas >= 5 and horas <= 15:
        # Entre 5 y 15 horas: Jugador frecuente
        print("Juegas", horas, "horas a la semana.")
        print("Tu clasificación es: JUGADOR FRECUENTE")
        print("¡Los videojuegos son un hobby importante para ti!")
    
    else:
        # Más de 15 horas: Gamer pro
        print("Juegas", horas, "horas a la semana.")
        print("Tu clasificación es: GAMER PRO")
        print("¡Los videojuegos son una parte fundamental de tu vida!")
    
    print("=========================================")
    print()
    
    # Preguntar si desea realizar otra clasificación
    print("¿Deseas clasificar a otra persona? (escribe 'si' o 'no')")
    continuar = input(">>> ").lower()
    
    # Validar la respuesta
    while continuar != "si" and continuar != "no":
        print("Por favor, escribe 'si' o 'no':")
        continuar = input(">>> ").lower()
    
    print()

# Mensaje de despedida
print("=========================================")
print("¡Gracias por usar el clasificador de jugadores!")
print("Recuerda: lo importante es disfrutar jugando,")
print("sin descuidar otras actividades importantes.")
print("=========================================")

Simulador Interactivo

Prueba cómo funciona el programa ingresando horas de juego a continuación:

Resultado

¿Cómo usar el simulador?

  1. Ingresa un número entre 0 y 168 en el campo de horas
  2. Haz clic en "Clasificar Jugador" para ver tu categoría
  3. Prueba con diferentes valores para entender cómo funciona
  4. Usa "Reiniciar" para limpiar y empezar de nuevo

Guía Pedagógica

Conceptos Clave Aprendidos

  • Estructuras de control: Uso de if-elif-else para toma de decisiones
  • Validación de entrada: Cómo asegurar que el usuario ingrese datos correctos
  • Ciclos while: Para repetir acciones mientras se cumpla una condición
  • Operadores de comparación: Uso de <, >=, <= para comparar valores
  • Operadores lógicos: Uso de and para combinar condiciones

Actividades de Ampliación

  • Modifica los rangos: Cambia los límites de las categorías y prueba el programa
  • Añade una categoría: Agrega "Más de 40 horas → Adicto a los videojuegos"
  • Mejora los mensajes: Personaliza los mensajes según la categoría
  • Agrega estadísticas: Lleva un conteo de cuántas personas clasificaste en cada categoría
  • Crea tu propio clasificador: Diseña un programa similar para otro tema (ej: tipo de estudiante según horas de estudio)

Errores Comunes a Evitar

  • Olvidar convertir la entrada de texto a número con int()
  • No validar que la entrada sea un número válido
  • Usar un solo signo igual (=) en lugar de doble (==) para comparaciones
  • No considerar los límites de los rangos (ej: incluir el 5 en ambas categorías)
  • Olvidar actualizar la variable de control en ciclos while