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.
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 cumple parcialmente con el enunciado:
- SÍ: Muestra la lista inicial
- SÍ: Genera todas las permutaciones posibles
- NO: No imprime las permutaciones en el formato solicitado (strings separados por espacios), sino que las muestra como listas con corchetes y comas
- NO: El enunciado especifica un texto de salida concreto ("Lista:", "Permutaciones:") que el programa no sigue exactamente
Es fácil de leer y entender
El código presenta dificultades para principiantes:
- Uso avanzado de
itertools.permutations()que los alumnos aún no han visto en profundidad - Conversión repetida de iteradores a listas (
list(permutations(lista))) es confusa e ineficiente - El uso de
enumerate()yf-stringspuede ser complejo para quien está aprendiendo - No hay comentarios explicativos que ayuden a entender la lógica
Sigue buenas prácticas de programación
El programa no sigue buenas prácticas:
- No define un bloque principal
if __name__ == "__main__": - Duplica la conversión a lista:
list(permutations(lista))aparece dos veces - No proporciona la funcionalidad opcional solicitada (listas con 4+ elementos)
- El formato de salida no coincide con las especificaciones del enunciado
Recomendaciones de mejora
-
Cumple exactamente con el formato de salida:
print('Lista:', lista) print('Permutaciones:') for perm in permutations(lista): print(' '.join(perm)) -
Implementación sin itertools: Para esta práctica, deberías implementar un algoritmo de permutaciones (recursión o backtracking) en lugar de usar
itertools -
Añade la funcionalidad opcional:
lista = ['Hola', 'Qué tal', 'Adiós', 'Bienvenido'] # 4 elementos -
Optimiza la eficiencia:
perm_list = list(permutations(lista)) print(f"Total de permutaciones: {len(perm_list)}") -
Estructura el programa con función principal para mejores prácticas
La práctica debería centrarse en entender cómo generar permutaciones mediante algoritmos propios, no en usar funciones avanzadas de librerías.