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 inicial
lista = ['Hola', 'Qué tal', 'Adiós']
ver = lista.copy() # Copia "lista" en "ver"
print('Lista:', lista)
print('Permutaciones:')
# Este bucle agrega una letra al final de la lista y elimina la del inicio
for i in range(3):
ver.append(lista[i])
ver.pop(0)
print(ver[0], ver[1], ver[2])
# Sobreescribo los valores de las listas para que funcione el siguiente bucle
lista = ['Adiós', 'Qué tal', 'Hola']
ver = lista.copy()
# Este bucle agrega una letra al inicio de la lista y elimina la del final
for i in range(3):
ver.insert(0, lista[2 - i])
ver.pop()
print(ver[0], ver[1], ver[2])
Análisis
Cumple con el enunciado
Sí cumple. El programa genera las 6 permutaciones posibles de la lista inicial de 3 elementos, como se observa en la salida. Cada bucle produce 3 resultados distintos, completando todas las combinaciones necesarias para el tamaño de lista especificado.
Es fácil de leer y entender
No del todo. El uso de variables poco descriptivas como ver dificulta entender su propósito. La lógica de los dos bucles separados (especialmente el reinicio manual de lista antes del segundo bucle) resulta confusa, ya que no queda claro por qué se modifica la lista original a ['Adiós', 'Qué tal', 'Hola'] para la segunda parte.
Sigue buenas prácticas de programación
No completamente. Contiene valores hardcodeados como 3 y 2 - i, lo que reduce su flexibilidad. Aunque el enunciado especifica una lista de 3 elementos, sería mejor usar len(lista) para referenciar su tamaño. Además, la modificación manual de lista antes del segundo bucle complica la lógica y podría evitarse con un enfoque más coherente.
Recomendaciones de mejora
-
Evita valores fijos: Usa
len(lista)en lugar de3en los bucles y cálculos de índices (ej.:range(len(lista))). -
Mejora nombres de variables: Cambia
verpor algo comopermutacion_actualpara clarificar su uso. -
Simplifica la lógica: Elimina la reasignación manual de
listaantes del segundo bucle. Busca un método único que genere todas las permutaciones sin reiniciar valores arbitrariamente. -
Considera bucles anidados: Para este problema específico (3 elementos), podrías usar 3 bucles
foranidados que recorran índices válidos, evitando operaciones manuales comoinsertypop. Esto haría el código más intuitivo para permutaciones pequeñas.