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 en parte 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.
- Comprobación de archivos con extension '.py'
- Comprobación con ficheros de solución
- Revisión automática de programa
- Análisis
- Recomendaciones de mejora
Comprobación de archivos con extension '.py'
Archivos encontrados, que no son : permutaciones.py
Correcto, se elige permutaciones.py para el análisis
Comprobación con ficheros de solución
Los archivos son diferentes de los de la solución.
Revisión automática de programa
Programa revisado:
from itertools import permutations
lista = ["Hola", "Qué tal", "Adiós"]
all_permutations = permutations(lista)
print("Todas las permutaciones posibles:")
for i, perm in enumerate(all_permutations, 1):
print(f"{i}. {list(perm)}")
print(f"\nTotal de permutaciones: {len(list(permutations(lista)))}")
Análisis
Cumple con el enunciado
El programa no cumple con el enunciado. El enunciado requiere que cada permutación se muestre como una cadena de strings separados por espacios (ej: Hola Qué tal Adiós), pero el código imprime las permutaciones como listas con corchetes y comillas (ej: ['Hola', 'Qué tal', 'Adiós']). Además, añade numeración (1., 2., etc.) y un recuento final de permutaciones, lo cual no está en el ejemplo del enunciado. Tampoco inicia con las líneas obligatorias: print('Lista:', lista) y print('Permutaciones:').
Es fácil de leer y entender
El código es breve y usa nombres de variables claros, pero no es adecuado para principiantes en este contexto. El uso del módulo itertools oculta la lógica de cómo se generan las permutaciones, que es el objetivo principal del ejercicio. Un alumno principiante no aprendería el proceso de construcción de permutaciones con bucles anidados al usar esta solución.
Sigue buenas prácticas de programación
Aunque usar itertools es una buena práctica en proyectos reales, no aplica aquí. El enunciado pide resolver el problema con construcciones básicas (bucles, condicionales), y el uso de itertools evita que el alumno practique esos conceptos. Además, el formato de salida no sigue las especificaciones, lo que viola un requisito clave del ejercicio.
Recomendaciones de mejora
-
Elimina
itertools: Este ejercicio debe resolverse con bucles anidados (ej: tresforpara una lista de 3 elementos) para que practiques la lógica de permutaciones. -
Ajusta el formato de salida:
- Inicia con
print('Lista:', lista)yprint('Permutaciones:')como exige el enunciado. - Convierte cada permutación en una cadena con
.join()(ej:" ".join(perm)), sin corchetes ni numeración.
- Inicia con
-
Simplifica la lógica:
- Para 3 elementos, usa tres bucles
foranidados verificando que los índices no se repitan. - Ejemplo básico:
for i in range(3): for j in range(3): for k in range(3): if i != j and i != k and j != k: print(lista[i], lista[j], lista[k])
- Para 3 elementos, usa tres bucles
-
Evita salidas adicionales: No imprimas el total de permutaciones ni encabezados personalizados como
"Todas las permutaciones posibles:".