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']
print('Lista:', lista)
print('Permutaciones:')
print("")
#OPCION 1
print("Opcion 1: (Bucle)")
dim = len(lista)
for j in range(dim):
prim = lista[j]
l2 = lista.copy()
del(l2[j])
print(prim, l2[0], l2[1])
print(prim, l2[1], l2[0])
print("")
#Opcion 2
print("Opcion 2:")
print(lista[0], lista[1], lista[2])
print(lista[0], lista[2], lista[1])
print(lista[1], lista[0], lista[2])
print(lista[1], lista[2], lista[0])
print(lista[2], lista[0], lista[1])
print(lista[2], lista[1], lista[0])
Análisis
Cumple con el enunciado
Es fácil de leer y entender
del y copy() puede confundir a principiantes. La opción 2 es extremadamente directa pero repetitiva, lo que facilita su comprensión para listas pequeñas.
Sigue buenas prácticas de programación
l2[0] y l2[1]), lo que la hace inflexible para listas de tamaño diferente.
Recomendaciones de mejora
-
Evitar hardcodeo en la opción 2
La opción 2 solo funciona para listas de 3 elementos específicos. Si el tamaño de la lista cambia, el programa falla. Es preferible usar bucles para resolver el problema de forma general. -
Usar índices en lugar de valores en la opción 1
En lugar deprim = lista[j], se podría trabajar directamente con índices para evitar crear copias innecesarias de la lista. -
Mejorar la claridad del código
Agregar comentarios explicando cada paso en la opción 1, y evitar operaciones comodel(l2[j])que modifican la lista original de forma poco intuitiva. -
Evitar asunciones sobre el tamaño de la lista
Aunque el enunciado especifica 3 elementos, un programa bien estructurado no debería depender de accesos manuales al2[0]yl2[1]. Se podría usar un bucle anidado para permutar los elementos restantes. -
Uso de
itertools.permutations(solo para referencia futura)
En un programa real, se recomendaría usaritertools.permutationspara generar permutaciones automáticamente. Sin embargo, esta práctica exige resolver el problema sin bibliotecas externas, por lo que no es aplicable aquí.