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:

def pintalista(a):
    for c in range(len(a)):
        print(a[c], end = " ")
    print()

while True:
    try:
        # Así me aseguro de que el usuario siempre introduzca numeros enteros mayores que 0
        num = int(input("Escribe un número natural: "))
        if num >= 1:
            break
        else:
            print("Solo se pueden escribir números naturales")
    except ValueError:
        print("Solo se pueden escribir números naturales")

# Creo una lista que contiene los números impares
impares = [i for i in range(1, num + 1) if i % 2 != 0]
for _ in range(len(impares)):
    pintalista(impares)
    impares.pop()

# Creo una lista que contiene los números pares
pares = [i for i in range(2, num + 1) if i % 2 == 0]
for _ in range(len(pares)):
    pintalista(pares)
    pares.pop()

Análisis

Cumple con el enunciado

Sí, el programa cumple correctamente con todos los requisitos del enunciado:

  • Pide un número entero al usuario
  • Verifica que sea mayor que 0
  • Genera las listas de números impares en orden ascendente y las muestra progresivamente
  • Genera las listas de números pares en orden ascendente y las muestra progresivamente
  • Sigue exactamente el patrón de los ejemplos proporcionados

La lógica es correcta: para un número 5 genera correctamente las secuencias 1,3,5 → 1,3 → 1 y 2,4 → 2. Para 8 genera 1,3,5,7 → 1,3,5 → 1,3 → 1 y 2,4,6,8 → 2,4,6 → 2,4 → 2.

Es fácil de leer y entender

El código es razonablemente claro para alguien que está aprendiendo:

  • Los nombres de variables son descriptivos (impares, pares, num)
  • La lógica está bien estructurada con comentarios explicativos
  • La función pintalista() está bien nombrada y su propósito es claro
  • El control de errores es visible y comprensible

Sin embargo, hay aspectos que podrían mejorarse:

  • El código es conciso pero podría beneficiarse de más espacios en blanco
  • Algunos comentarios son redundantes o could be more concise
  • La función main() podría usarse para organizar mejor el código

Sigue buenas prácticas de programación

El programa sigue varias buenas prácticas:

  • Usa control de excepciones para manejar errores de entrada
  • Tiene un bucle infinito con break para asegurar entrada válida
  • Los nombres de variables son descriptivos
  • La separación de responsabilidades está clara (entrada, procesamiento, salida)

Aspectos a mejorar:

  • El mensaje de entrada no coincide exactamente con el enunciado ("Escribe un número natural:" vs "Dame un número entero mayor que 0:")
  • No hay un punto de entrada claro (main guard)
  • La función pintalista() no es la mejor práctica (debería usar join() o iterar correctamente)

Recomendaciones de mejora

  1. Corregir el mensaje de entrada: Cambiar "Escribe un número natural:" por "Dame un número entero mayor que 0: " para que coincida exactamente con el enunciado.

  2. Mejorar la función de impresión: En lugar de usar un bucle range(len()) con print(a[c], end=" "), sería mejor usar " ".join(map(str, a)) para mayor claridad y eficiencia.

  3. Añadir mejor estructura: Considerar envolver el código en una función main() y usar if __name__ == "__main__":.

  4. Mejorar el formato: Añadir más espacios en blanco entre secciones para mejorar la legibilidad.

  5. Simplificar comentarios: Algunos comentarios como "Creo una lista que contiene los números impares" son evidentes del código, podrían ser más descriptivos o eliminarse.

El programa funciona correctamente y es una solución válida, solo necesita estos ajustes menores para ser aún más claro y seguir exactamente las especificaciones del enunciado.