Skip to content

Revisión automática de la práctica 01-permutaciones

Este es el resultado de una revisión automática de la prácica 01-permutaciones, 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:

lista = ["Hola", "Que tal", "Adiós"]
print("Lista:", lista)
print("Permutaciones:")

for i in range(len(lista)):
    first = lista[i]
    lista2 = lista.copy()
    del lista2[i]

    print(first, lista2[0], lista2[1])
    print(first, lista2[1], lista2[0])


Análisis

Cumple con el enunciado

Sí. El programa genera correctamente las 6 permutaciones para una lista de 3 elementos, como se muestra en el ejemplo del enunciado. Para cada elemento de la lista original, lo coloca en primera posición y combina las dos posiciones restantes en ambos órdenes posibles (ej.: ["Hola", "Que tal", "Adiós"] y ["Hola", "Adiós", "Que tal"]), cumpliendo con el objetivo de mostrar todas las permutaciones.

Es fácil de leer y entender

Sí, pero con matices. El código es breve y usa estructuras básicas (bucle for, operaciones con listas), lo que lo hace accesible para principiantes. Sin embargo, el nombre lista2 no describe su propósito (elementos restantes tras eliminar uno), y la impresión manual de combinaciones con índices fijos ([0], [1]) dificulta visualizar la lógica a simple vista.

Sigue buenas prácticas de programación

Parcialmente. Aunque resuelve el problema para listas de exactamente 3 elementos, el código depende de suposiciones rígidas (acceder a índices [0] y [1] de lista2). Si el tamaño de la lista cambiara, el programa fallaría. No obstante, dado que el enunciado parece enfocarse en un caso específico (3 elementos), esta aproximación es aceptable para el nivel del alumno.

Recomendaciones de mejora

  • Usa bucles anidados para las posiciones restantes: En lugar de imprimir manualmente las combinaciones de los elementos restantes (ej.: print(first, lista2[0], lista2[1])), podrías usar un segundo bucle for para recorrer lista2 y generar las permutaciones dinámicamente. Esto haría el código más claro y adaptable si en el futuro se trabaja con listas de tamaño variable (aunque para este ejercicio no es necesario).

  • Mejora los nombres de variables: Cambia lista2 por un nombre descriptivo como resto_elementos para indicar que contiene los elementos no seleccionados en cada iteración.

  • Evita índices fijos: Aunque el enunciado es para 3 elementos, acceder a índices específicos ([0], [1]) limita la comprensión. Si usas bucles anidados, el código reflejará mejor la lógica de permutación sin depender de tamaños predefinidos.

  • Nota sobre itertools: Para programas reales, existen herramientas como itertools.permutations, pero en esta práctica se busca implementar la lógica manualmente, por lo que no debes usarla aquí.