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'] (3 elementos), mostrando 6 combinaciones únicas (3 elementos × 2 combinaciones restantes). Cada permutación se imprime en dos órdenes diferentes, lo que cubre todas las posibilidades válidas.

Es fácil de leer y entender

⚠️ Parcialmente.

  • El uso de del(lista2[i]) para eliminar el primer elemento puede confundir a principiantes, ya que modifica la lista original.
  • Los índices [0] y [1] en print asumen que siempre habrá exactamente dos elementos en lista2, lo que es válido para este caso específico pero no es explícito.
  • La repetición de print para invertir el orden de los elementos restantes podría simplificarse.

Sigue buenas prácticas de programación

⚠️ Parcialmente.

  • Se evita el uso de módulos externos (como itertools), lo cual es coherente con la práctica.
  • La lógica funciona, pero el uso de del para modificar lista2 puede ser menos intuitivo.
  • No se generaliza para listas de tamaño variable (aunque el enunciado no lo requiere).

Recomendaciones de mejora

  1. Evitar modificar listas originales:
    En lugar de usar del(lista2[i]), crea una nueva lista sin el elemento actual con comprensión:

    lista2 = [elemento for j, elemento in enumerate(lista) if j != i]

    Esto evita efectos secundarios y mejora la claridad.

  2. Simplificar la impresión de permutaciones:
    Usa una variable para iterar sobre los dos órdenes posibles ([0, 1] y [1, 0]) en lugar de repetir print:

    for orden in [(0, 1), (1, 0)]:
        print(first, lista2[orden[0]], lista2[orden[1]])
  3. Claridad en variables:
    Nombra lista2 como resto o elementos_restantes para indicar su propósito.

  4. Uso de itertools.permutations (solo para referencia futura):
    En un programa real, se podría usar itertools.permutations para simplificar el código. Sin embargo, en esta práctica se espera resolverlo con bucles y lógica básica.

  5. No usar bucles anidados (opcional):
    El programa actual no los usa, pero podría hacerlo para manejar permutaciones de listas más grandes. En este caso, como la lista tiene 3 elementos, la solución actual es válida.