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.


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:

#permutaciones
lista = ['Hola', 'Qué tal', 'Adiós']

for i in range(len(lista)):
    first = lista[i]
    lista2 = lista.copy()
    del(lista2[i])
    print(first, lista2[0], lista2[1])
    print(first, lista2[1], lista2[0])

Análisis

Cumple con el enunciado

El programa cumple parcialmente con el enunciado. Genera correctamente las 6 permutaciones de la lista de 3 elementos, y el formato de salida coincide con el ejemplo. Sin embargo, no resuelve la parte opcional de manejar listas con 4 o más elementos, ya que está diseñado específicamente para listas de 3 elementos. Si la lista tuviera 4 elementos, el código fallaría porque asume que siempre quedan 2 elementos en lista2 después de eliminar uno.

Es fácil de leer y entender

El código es relativamente fácil de entender para alguien que conoce bucles, listas y operaciones básicas como .copy() y del(). La lógica de seleccionar cada elemento como "primero" y luego permutar los restantes es intuitiva para 3 elementos. Sin embargo, el uso de del(lista2[i]) y la manipulación directa de índices puede confundir a principiantes, especialmente si no están familiarizados con cómo modificar listas dentro de bucles.

Sigue buenas prácticas de programación

El programa no sigue buenas prácticas de generalidad y reutilización. Está codificado para listas de exactamente 3 elementos, lo que limita su utilidad. Además, el uso de del() para modificar lista2 en lugar de usar operaciones inmutables (como listas por comprensión o [:]) podría evitarse para mejorar claridad. No hay comentarios ni funciones, lo que dificulta su mantenimiento o adaptación.

Recomendaciones de mejora

  1. Evitar dependencia del tamaño fijo de la lista
    El código asume que lista2 siempre tendrá 2 elementos. Para listas más largas, esta lógica no funciona. Se debería usar un método recursivo o bucles anidados para manejar permutaciones de cualquier longitud.

  2. Usar nombres de variables más descriptivos
    Cambiar i por indice y lista2 por resto_lista mejoraría la claridad.

  3. Evitar modificar listas con del()
    En lugar de del(lista2[i]), se podría usar resto_lista = lista[:i] + lista[i+1:] para crear una nueva lista sin el elemento seleccionado, sin alterar la original.

  4. Estructura modular (opcional para principiantes)
    Si se permitiera, encapsular la lógica en una función recursiva o con bucles anidados haría el código más reutilizable.

  5. Imprimir permutaciones con bucles
    En lugar de repetir print(first, lista2[0], lista2[1]) y print(first, lista2[1], lista2[0]), se podrían usar bucles anidados para iterar sobre las combinaciones restantes, como:

    for j in range(len(lista2)):
        for k in range(len(lista2)):
            if j != k:
                print(first, lista2[j], lista2[k])

    Esto prepara al alumno para pensar en soluciones escalables.