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 = int(input("Introduce un numero entero mayor que 0: "))
impares = []
for i in range (1, numero + 1):
    if i % 2 != 0:
        impares.append(i)
longitud_i = len(impares)
for j in range (longitud_i, 0, -1):
    texto_l = ""
    for k in range (j):
        texto_l += str(impares[k]) + " "
    print(texto_l)

pares = []

for a in range (1, numero + 1):
    if a % 2 == 0:
        pares.append(a)
longitud_a = len(pares)
for j in range (longitud_a, 0, -1):
    texto_a = ""
    for k in range (j):
        texto_a += str(pares[k]) + " "
    print(texto_a)

Análisis

Cumple con el enunciado

El programa NO cumple completamente con el enunciado. Aunque implementa la funcionalidad básica de imprimir listas de impares y pares con el patrón requerido, tiene varios problemas:

  1. Falta validación del número: No verifica si el número introducido es mayor que cero como requiere el enunciado.
  2. Error en el rango de pares: En el segundo bucle for a in range (1, numero + 1):, debería llegar hasta numero + 1 para incluir el número si es par, pero el enunciado dice "menores o iguales", lo cual se cumple, sin embargo la implementación actual sí incluye números pares menores o iguales al número especificado.
  3. Mensaje de entrada diferente: Usa un mensaje diferente al del enunciado.

Es fácil de leer y entender

El programa es moderadamente fácil de entender para principiantes:

  • Los nombres de variables son descriptivos (impares, pares, numero)
  • La estructura lógica es clara: construir listas y luego imprimirlas
  • La indentación es correcta

Sin embargo, podría ser más legible:

  • Hay duplicación de código entre las secciones de impares y pares
  • Los bucles anidados pueden resultar confusos para principiantes
  • Falta una línea en blanco entre las dos secciones principales

Sigue buenas prácticas de programación

El programa sigue parcialmente las buenas prácticas:

Aspectos positivos:

  • Uso de listas para almacenar datos temporalmente
  • Bucle for con rango bien definido
  • Concatenación de strings para construir las líneas de salida

Aspectos a mejorar:

  • No valida la entrada del usuario
  • Hay repetición de lógica entre las dos secciones principales
  • No usa join() para construir las cadenas de salida (más eficiente y legible)
  • Faltan espacios en blanco para mejorar la legibilidad visual

Recomendaciones de mejora

  1. Añadir validación de entrada:
numero = int(input("Dame un número entero mayor que 0: "))
if numero <= 0:
    print("El número debe ser mayor que 0")
    exit()
  1. Mejorar la construcción de las líneas de salida usando join():
for j in range(longitud_i, 0, -1):
    print(" ".join(str(impares[k]) for k in range(j)))
  1. Añadir una línea en blanco entre las secciones de impares y pares para mejor separación visual.

  2. Considerar usar una función auxiliar para evitar la repetición de código (aunque esto es opcional ya que aún no han visto funciones).

  3. Mejorar los nombres de variables en el segundo bloque para que sean más consistentes (j y k se repiten pero en contextos diferentes).

  4. Revisar el mensaje de entrada para que coincida exactamente con el del enunciado.