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
['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
- 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]enprintasumen que siempre habrá exactamente dos elementos enlista2, lo que es válido para este caso específico pero no es explícito. - La repetición de
printpara invertir el orden de los elementos restantes podría simplificarse.
Sigue buenas prácticas de programación
- 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
delpara modificarlista2puede ser menos intuitivo. - No se generaliza para listas de tamaño variable (aunque el enunciado no lo requiere).
Recomendaciones de mejora
-
Evitar modificar listas originales:
En lugar de usardel(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.
-
Simplificar la impresión de permutaciones:
Usa una variable para iterar sobre los dos órdenes posibles ([0, 1]y[1, 0]) en lugar de repetirprint:for orden in [(0, 1), (1, 0)]: print(first, lista2[orden[0]], lista2[orden[1]]) -
Claridad en variables:
Nombralista2comorestooelementos_restantespara indicar su propósito. -
Uso de
itertools.permutations(solo para referencia futura):
En un programa real, se podría usaritertools.permutationspara simplificar el código. Sin embargo, en esta práctica se espera resolverlo con bucles y lógica básica. -
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.