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:

from itertools import permutations

lista = ['Hola', 'Que tal', 'Adios', 'Buenos días', 'Buenas noches']
print('Lista:', lista)
todas_las_permutaciones = list(permutations(lista))
print('Permutaciones:', todas_las_permutaciones)

Análisis

Cumple con el enunciado

El programa cumple parcialmente con el enunciado. Utiliza correctamente itertools.permutations para generar todas las permutaciones de la lista, pero no sigue el formato de salida requerido. El enunciado especifica que cada permutación debe imprimirse en una línea separada con los elementos separados por espacios, mientras que el programa actual imprime una lista de tuplas. Además, el programa utiliza los 4 elementos recomendados para la opción avanzada, pero el nombre del archivo no se puede verificar en el código proporcionado.

Es fácil de leer y entender

El programa es conciso y utiliza funciones claras. Sin embargo, la salida raw de permutations() puede resultar confusa para principiantes, ya que muestra estructuras de datos anidadas. La ausencia de un bucle que itere sobre las permutaciones dificultaría la comprensión del proceso de generación.

Sigue buenas prácticas de programación

  1. Uso apropiado de librerías: Emplea itertools.permutations que es eficiente para este propósito
  2. Nomenclatura clara: Variables como lista y todas_las_permutaciones son descriptivas
  3. Eficiencia: Genera todas las permutaciones en una sola operación
  4. Falta formateo de salida: No adapta la salida al formato requerido

Recomendaciones de mejora

  1. Corregir el formato de salida:

    for perm in permutations(lista):
        print(' '.join(perm))
  2. Manejo de casos especiales: Agregar validaciones para listas vacías o con un solo elemento

  3. Solución sin itertools (opcional):

    • Implementar algoritmo básico de permutaciones para reforzar conceptos
    • Usar bucles anidados para listas pequeñas (menos de 4 elementos)
    • Ejemplo para 3 elementos:
      for i in lista:
          for j in lista:
              for k in lista:
                  if i != j and i != k and j != k:
                      print(f"{i} {j} {k}")
  4. Comentarios educativos: Añadir explicaciones sobre cómo funcionan las permutaciones, útil para principiantes

  5. Nombres en español: Considerar variables como palabras o elementos en lugar de lista para mayor claridad conceptual

La solución es técnicamente correcta pero necesita ajustes para cumplir completamente con los requisitos de formato y ser más instructive para principiantes.