Skip to content

Revisión automática de la práctica 02-enumera

Este es el resultado de una revisión automática de la prácica 02-enumera, tal y como la hemos recogido de este repositorio de entrega. Por favor, ten en cuenta que al ser una revisión automática, realizada con la ayuda de un asistente de inteligencia artificial generativa, puede incluir errores, y ser incorrecta. Pero leela con atención, porque creemos que puede tener información útil. Si tienes cualquier duda, o crees que la revisión es errónea, por favor, consulta con los profesores de la asignatura.


Revisión automática de programa

Programa revisado:

numero_entero = int(input("Introduce un número entero mayor que 0: "))
if numero_entero <= 0:
    print("El número debe ser mayor que cero.")
else:

    impares = range(1, numero_entero + 1, 2)  # Crea una secuencia de números empezando en 1, hasta el numero que hayamos introducido incluido (por eso +1),
    # saltando de 2 en 2 . Esto genera solo números impares

    for cantidad_num in range(len(impares), 0, -1): #El bucle va reduciendo la cantidad de números que se imprimen en cada línea
        #Empezando con todos los impares del numero que hayamos introducido y quitando uno de la derecha en cada línea,hasta llegar al 1

        print(*impares[:cantidad_num])#* hace que los números dentro del rango se impriman individualmente, lo que nos permite
            # que en una misma linea aparezcan todos los pares menores o iguales a un número



    pares = range(2, numero_entero + 1, 2)# Crea una secuencia de números empezando en 2, hasta el numero que hayamos introducido incluido (por eso +1),
    # saltando de 2 en 2 . Esto genera solo números pares

    for cantidad_num in range(len(pares), 0, -1):

        print(*pares[:cantidad_num])

    #El comando len cuenta cuántos números pares hay desde 2 hasta numero_entero, e impares desde 1 hasta  numero_entero
    # y usa ese valor para los bucles que imprimen subconjuntos decrecientes de pares o impares, generando el patrón que queremos.

Revisaré el programa proporcionado siguiendo la estructura solicitada.

Análisis

Cumple con el enunciado

El programa sí cumple con el enunciado en su funcionalidad principal:

  • Pide un número entero al usuario
  • Verifica que sea mayor que cero
  • Genera y muestra las listas de números impares en orden descendente (empezando por 1)
  • Genera y muestra las listas de números pares en orden descendente (empezando por 2)
  • La salida sigue el patrón requerido

El programa produce exactamente la salida esperada para los ejemplos proporcionados (números 5 y 8).

Es fácil de leer y entender

Parcialmente fácil de leer. El programa tiene algunos problemas de legibilidad:

  • Comentarios muy largos: Los comentarios en las líneas se extienden mucho y pueden dificultar la lectura
  • Falta de espacios: No hay líneas en blanco para separar visualmente las secciones de impares y pares
  • Nombres poco descriptivos: cantidad_num no es el nombre más claro para una variable
  • Mezcla de español e inglés: Se mezclan nombres en español (numero_entero) con comentarios en español y inglés

Sigue buenas prácticas de programación

Sigue parcialmente las buenas prácticas:

  • Validación de entrada adecuada
  • Uso de range() para generar secuencias eficientemente
  • Uso del operador * para desempaquetar listas en print()
  • ⚠️ Problema importante: Intenta hacer slicing ([:]) directamente en un objeto range(), lo que no es estándar en versiones anteriores de Python y puede causar confusión

Recomendaciones de mejora

  1. Separar visualmente las secciones: Añadir una línea en blanco entre la sección de impares y pares para mejor legibilidad

  2. Corregir el uso de slicing en range: Convertir los rangos a listas para hacer slicing de forma más clara y compatible:

    impares = list(range(1, numero_entero + 1, 2))
    pares = list(range(2, numero_entero + 1, 2))
  3. Mejorar nombres de variables: Usar nombres más descriptivos, por ejemplo tamaño en lugar de cantidad_num

  4. Dividir comentarios largos: Los comentarios muy largos pueden dividirse en líneas más cortas para mejor legibilidad

  5. Consistencia de idioma: Mantener la coherencia entre español e inglés en comentarios y nombres de variables

El programa cumple con la funcionalidad requerida, pero pequeñas mejoras de formato y claridad lo harían más fácil de mantener y entender.