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', '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 genera todas las permutaciones posibles de la lista ['Hola', 'Qué tal', 'Adiós']. Para cada elemento de la lista, crea una copia sin ese elemento y luego imprime dos combinaciones: el elemento fijado seguido de los restantes en orden original e invertido. Esto cubre las 6 permutaciones válidas (3! = 6).

Es fácil de leer y entender

. El código es claro para un principiante:

  • Usa variables con nombres descriptivos (first, lista2).
  • La lógica se repite de forma predecible para cada posición de la lista.
  • No hay estructuras complejas ni anidamientos excesivos.

Sigue buenas prácticas de programación

.

  • Evita modificar la lista original al usar .copy().
  • Utiliza del correctamente para eliminar el elemento en la posición i.
  • El enunciado no requiere generalización para listas de tamaño variable, por lo que el enfoque es adecuado para el problema planteado.

Recomendaciones de mejora

  1. Evitar repetición manual:
    El código asume que la lista tiene exactamente 3 elementos. Si se quisiera generalizar para listas de tamaño n, sería mejor usar bucles anidados o recursión. Por ejemplo, para una lista de 4 elementos, este enfoque no funcionaría.

  2. Uso de itertools.permutations (solo para referencia futura):
    Aunque en esta práctica se espera implementar la lógica manualmente, en un programa real se podría usar itertools.permutations para simplificar el código. No es necesario aplicarlo aquí, pero es útil conocerlo para problemas similares.

  3. Claridad en los índices:
    En lugar de lista2[0] y lista2[1], se podrían asignar variables como segundo y tercero para mejorar la legibilidad:

    segundo, tercero = lista2[0], lista2[1]
    print(first, segundo, tercero)
    print(first, tercero, segundo)
  4. Considerar bucles anidados:
    Para evitar repetir código, se podrían usar bucles anidados que recorran las posiciones restantes después de fijar el primer elemento. Esto haría el programa más escalable (por ejemplo, para listas de 4 elementos).