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 bucleforpara recorrerlista2y 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
lista2por un nombre descriptivo comoresto_elementospara 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 comoitertools.permutations, pero en esta práctica se busca implementar la lógica manualmente, por lo que no debes usarla aquí.