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:

#!/usr/bin/env python3
lista = ["Hola","¿Que tal?","Adios"]
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

.
El programa genera todas las permutaciones posibles de los 3 elementos de la lista, mostrando 6 combinaciones (3 elementos × 2 posibles ordenaciones para los restantes). El resultado coincide con lo esperado para una lista de 3 elementos.

Es fácil de leer y entender

⚠️ Parcialmente.
Aunque el código sigue una lógica clara (tomar cada elemento como "primero" y permutar los restantes), el uso de del(lista2[i]) y la manipulación directa de índices (lista2[0], lista2[1]) puede confundir a principiantes. Además, asume que la lista siempre tendrá 3 elementos, lo que limita su comprensión general.

Sigue buenas prácticas de programación

No.

  • Modifica la lista original (lista) al usar del, lo que podría causar errores si se reutiliza.
  • No es escalable: si la lista tuviera más de 3 elementos, el código no funcionaría (usa índices fijos).
  • Repite código en los print para permutar los dos últimos elementos, en lugar de usar un bucle anidado.

Recomendaciones de mejora

  1. Evitar modificar listas originales
    Usa lista2 = lista[:i] + lista[i+1:] en lugar de del(lista2[i]) para no alterar la lista original.

  2. Usar bucles anidados
    Reemplaza la repetición manual de permutaciones (print(first,lista2[0],lista2[1]) y print(first,lista2[1],lista2[0])) con un segundo bucle que itere sobre las posibles combinaciones restantes.

  3. Agregar comentarios
    Explica cada paso del código (ej: "Tomar el primer elemento", "Crear una lista sin el primer elemento", etc.) para facilitar su comprensión.

  4. No usar itertools
    Aunque itertools.permutations resolvería el problema de forma más eficiente, la práctica busca que se implemente la lógica manualmente. Mantén el enfoque actual.

  5. Hacerlo más flexible
    Si bien no es obligatorio, considera cómo adaptar el código para listas de cualquier longitud (ej: usando recursión o bucles dinámicos), aunque esto excede el nivel de dificultad actual.