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 en parte 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.
- Comprobación de archivos con extension '.py'
- Comprobación con ficheros de solución
- Revisión automática de programa
- Análisis
- Recomendaciones de mejora
Comprobación de archivos con extension '.py'
Archivos encontrados, que no son : permutaciones.py
Correcto, se elige permutaciones.py para el análisis
Comprobación con ficheros de solución
Los archivos son diferentes de los de la solución.
Revisión automática de programa
Programa revisado:
#permutaciones
lista = ['Hola', 'Qué tal', 'Adiós']
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
El programa cumple parcialmente con el enunciado. Genera correctamente las 6 permutaciones de la lista de 3 elementos, y el formato de salida coincide con el ejemplo. Sin embargo, no resuelve la parte opcional de manejar listas con 4 o más elementos, ya que está diseñado específicamente para listas de 3 elementos. Si la lista tuviera 4 elementos, el código fallaría porque asume que siempre quedan 2 elementos en lista2 después de eliminar uno.
Es fácil de leer y entender
El código es relativamente fácil de entender para alguien que conoce bucles, listas y operaciones básicas como .copy() y del(). La lógica de seleccionar cada elemento como "primero" y luego permutar los restantes es intuitiva para 3 elementos. Sin embargo, el uso de del(lista2[i]) y la manipulación directa de índices puede confundir a principiantes, especialmente si no están familiarizados con cómo modificar listas dentro de bucles.
Sigue buenas prácticas de programación
El programa no sigue buenas prácticas de generalidad y reutilización. Está codificado para listas de exactamente 3 elementos, lo que limita su utilidad. Además, el uso de del() para modificar lista2 en lugar de usar operaciones inmutables (como listas por comprensión o [:]) podría evitarse para mejorar claridad. No hay comentarios ni funciones, lo que dificulta su mantenimiento o adaptación.
Recomendaciones de mejora
-
Evitar dependencia del tamaño fijo de la lista
El código asume quelista2siempre tendrá 2 elementos. Para listas más largas, esta lógica no funciona. Se debería usar un método recursivo o bucles anidados para manejar permutaciones de cualquier longitud. -
Usar nombres de variables más descriptivos
Cambiariporindiceylista2porresto_listamejoraría la claridad. -
Evitar modificar listas con
del()
En lugar dedel(lista2[i]), se podría usarresto_lista = lista[:i] + lista[i+1:]para crear una nueva lista sin el elemento seleccionado, sin alterar la original. -
Estructura modular (opcional para principiantes)
Si se permitiera, encapsular la lógica en una función recursiva o con bucles anidados haría el código más reutilizable. -
Imprimir permutaciones con bucles
En lugar de repetirprint(first, lista2[0], lista2[1])yprint(first, lista2[1], lista2[0]), se podrían usar bucles anidados para iterar sobre las combinaciones restantes, como:for j in range(len(lista2)): for k in range(len(lista2)): if j != k: print(first, lista2[j], lista2[k])Esto prepara al alumno para pensar en soluciones escalables.