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 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:
import itertools
lista = ['Hola', 'Qué tal', 'Adiós']
print('Lista:', lista)
print('Permutaciones:')
permutaciones = list(itertools.permutations(lista))
for p in permutaciones:
print(" ".join(p))
Análisis
Cumple con el enunciado
El enunciado de la práctica indica que se deben generar permutaciones sin usar la biblioteca itertools. Este programa depende directamente de itertools.permutations para calcular las permutaciones, lo que evita que el alumno implemente la lógica manualmente con bucles y condicionales, como se espera.
Es fácil de leer y entender
El código es claro y directo: define una lista, muestra su contenido, genera las permutaciones y las imprime en un formato legible. Los nombres de las variables son descriptivos y la estructura lógica es sencilla para un principiante.
Sigue buenas prácticas de programación
Aunque el código está bien organizado y evita redundancias, el uso de itertools va en contra de las instrucciones específicas de la práctica. Además, no se validan posibles errores (por ejemplo, si la lista estuviera vacía), pero esto podría no ser relevante para el nivel del alumno.
Recomendaciones de mejora
-
Evitar
itertools:
Reemplazaitertools.permutationscon una implementación manual usando bucles anidados (forowhile) y condicionales. Por ejemplo, para una lista de 3 elementos, puedes usar tres buclesforpara generar todas las combinaciones posibles sin repetición. -
Reflexionar sobre la lógica de permutaciones:
Asegúrate de entender cómo se generan las permutaciones sin herramientas externas. Para listas pequeñas, los bucles anidados son suficientes; para listas más grandes, se requeriría recursión (aunque esto último podría no ser necesario según el enunciado). -
Formato de salida:
Verifica que el formato de impresión (" ".join(p)) coincida exactamente con el ejemplo del enunciado. Si el ejemplo requiere corchetes o comas, ajusta la salida para que sea idéntica. -
Generalización del código:
Si el enunciado lo permite, considera hacer el programa más flexible (por ejemplo, permitir que el usuario ingrese los elementos de la lista), pero prioriza cumplir con las restricciones de la práctica.