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:
lista = ["1","2","3","4"]
print("Aquí tienes todas las combinaciones posibles de 4 cifras con los números 1, 2 3 y 4 ")
for i in range(len(lista)):
first = lista [i]
lista2 = lista.copy()
del(lista2[i])
print(first, lista2[0], lista2[1], lista2[2])
print(first, lista2[0], lista2[2], lista2[1])
print(first, lista2[1], lista2[0], lista2[2])
print(first, lista2[1], lista2[2], lista2[0])
print(first, lista2[2], lista2[0], lista2[1])
print(first, lista2[2], lista2[1], lista2[0])
Análisis
Cumple con el enunciado
No, el programa no cumple con el enunciado. El enunciado pide específicamente:
- Un programa llamado
permutaciones.py - Que comience con la lista
['Hola', 'Qué tal', 'Adiós'] - Que imprima las líneas exactas:
print('Lista:', lista) print('Permutaciones:') - Que genere todas las permutaciones de esa lista específica
El programa proporcionado usa una lista diferente (["1","2","3","4"]) y no sigue la estructura requerida. Además, aunque intenta generar permutaciones, el enfoque es rígido y no funciona para listas de diferente tamaño.
Es fácil de leer y entender
Parcialmente. El programa usa conceptos básicos como bucles for, slicing de listas y operaciones de copia, lo cual es apropiado para principiantes. Sin embargo, tiene varios problemas que dificultan su comprensión:
- Usa múltiples
print()hardcodeados en lugar de un bucle - La lógica de eliminación de elementos con
del()no es muy clara para principiantes - El código está duplicado repetitivamente
- No hay comentarios explicativos
Sigue buenas prácticas de programación
No, presenta varios problemas:
- Rigidez: Solo funciona para listas de 4 elementos
-
Código duplicado: Usa múltiples
print()idénticos - Falta de generalización: No es reutilizable para otros tamaños de lista
-
Nombres poco descriptivos:
lista2no es descriptivo - No sigue el formato requerido: No cumple con las especificaciones del enunciado
- Solución manual: Implementa manualmente las permutaciones en lugar de usar un algoritmo recursivo o iterativo
Recomendaciones de mejora
-
Cumple con el enunciado: Modifica el programa para usar la lista exacta requerida y seguir la estructura de salida especificada.
-
Usa recursión o bucles anidados: En lugar de código duplicado, implementa un algoritmo de permutaciones usando:
for i in range(len(lista)): # resto del código usando un bucle interno -
Haz el código general: Permite que funcione con cualquier tamaño de lista usando bucles anidados en lugar de casos hardcodeados.
-
Mejora la legibilidad:
- Usa nombres de variables más descriptivos
- Añade comentarios explicativos
- Formatea el código adecuadamente
-
No uses itertools: Aunque sería más fácil, el objetivo educativo es que aprendas a implementar permutaciones manualmente.
Recuerda que para listas de 4 o más elementos, puedes usar recursión o bucles anidados para hacer el programa completamente general y elegante.