Skip to content

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:

  1. Un programa llamado permutaciones.py
  2. Que comience con la lista ['Hola', 'Qué tal', 'Adiós']
  3. Que imprima las líneas exactas:
    print('Lista:', lista)
    print('Permutaciones:')
  4. 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: lista2 no 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

  1. Cumple con el enunciado: Modifica el programa para usar la lista exacta requerida y seguir la estructura de salida especificada.

  2. 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
  3. Haz el código general: Permite que funcione con cualquier tamaño de lista usando bucles anidados en lugar de casos hardcodeados.

  4. Mejora la legibilidad:

    • Usa nombres de variables más descriptivos
    • Añade comentarios explicativos
    • Formatea el código adecuadamente
  5. 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.