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 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 de comidas
lista = ['Pizza', 'Sushi', 'Tacos']

print("Opciones de comida:", lista)
print("Combinaciones posibles:\n")

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

    # Dos combinaciones por cada primera elección
    print(f"Quiero comer {first}, {lista2[0]} y {lista2[1]}")
    print(f"Quiero comer {first}, {lista2[1]} y {lista2[0]}")

Análisis

Cumple con el enunciado

Sí cumple. El programa genera las 6 combinaciones posibles (permutaciones) para la lista de 3 comidas, como se observa en los dos print por cada elemento inicial. Para cada comida elegida como primera, muestra las dos variantes posibles con el resto de elementos, cumpliendo con el ejemplo de ejecución esperado.

Es fácil de leer y entender

Parcialmente. Usa nombres de variables en español (lista, first), lo que ayuda, pero lista2 es poco descriptivo (¿resto? ¿otros?). Los índices [0] y [1] son comprensibles solo porque el problema es para 3 elementos, pero generan duda sobre su propósito sin comentarios. La línea del(lista2[i]) puede confundir a principiantes al modificar la lista copiada.

Sigue buenas prácticas de programación

No del todo. Aunque funciona para 3 elementos, el código depende de que la lista tenga exactamente 3 items (usa [0] y [1] directamente). Si la lista tuviera más elementos, fallaría. Además, repite dos veces el print en lugar de usar un bucle para las combinaciones del resto, lo que dificulta mantener el código si cambia el tamaño de la lista.

Recomendaciones de mejora

  • Usa un bucle anidado para las combinaciones del resto de elementos. En lugar de dos print fijos, itera sobre las posiciones restantes (ej: for j in range(len(lista2))) para generar dinámicamente las permutaciones. Esto refuerza el uso de bucles y evita repetición.

  • Mejora los nombres de variables: Cambia lista2 por algo como resto_comidas para clarificar su propósito. En lugar de first, usa primera_comida.

  • Evita del para modificar listas: Usa slicing para crear el resto (ej: resto_comidas = lista[:i] + lista[i+1:]), que es más seguro y claro para principiantes que del.