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.

TOC


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

  1. Elimina itertools: Este ejercicio debe resolverse con bucles anidados (ej: tres for para una lista de 3 elementos) para que practiques la lógica de permutaciones.
  2. Ajusta el formato de salida:
    • Inicia con print('Lista:', lista) y print('Permutaciones:') como exige el enunciado.
    • Convierte cada permutación en una cadena con .join() (ej: " ".join(perm)), sin corchetes ni numeración.
  3. Simplifica la lógica:
    • Para 3 elementos, usa tres bucles for anidados 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])
  4. Evita salidas adicionales: No imprimas el total de permutaciones ni encabezados personalizados como "Todas las permutaciones posibles:".