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:
entrada= input("Escribe varias palabras separadas por comas:")
#Convertimos las palabras en una lista
lista=entrada.split(",")
print("lista",lista)
print("Permutaciones")
#Con este comando genero las permutaciones manualmente
def permutaciones(lista):
#si la lista solo tiene una palabra , es la unica permutacion posible
if len(lista) ==1:
return [lista]
#Guardamos todas las permutaciones aqui
resultado = []
#REcorremos todas las posiciones de la lista
for i in range(len(lista)):
#elegimos 1 como primero
primero = lista[i]
#ahora los demas elementos quitando el elegido
resto = lista[:i] +lista[i+1:]
#Obtengo ahora las permutaciones del resto
subpermutaciones = permutaciones(resto)
#Añadimos el primero a cada una de las permutaciones
for p in subpermutaciones:
resultado.append ([primero]+ p)
return resultado
#Si no hay elementos ,avisamos ; si no, imprimimos cada permutación
if not lista:
print("(No hay elementos para permutar")
else:
for p in permutaciones(lista):
print(" ".join(p))
Análisis
Cumple con el enunciado
El programa genera todas las permutaciones posibles de las palabras ingresadas sin usar itertools, como se requiere. Si la lista está vacía, muestra un mensaje adecuado. Las permutaciones se imprimen concatenadas con espacios, siguiendo el formato esperado.
Es fácil de leer y entender
El código tiene comentarios explicativos, pero algunos son redundantes (ej: "#Convertimos las palabras en una lista"). Las variables usan nombres en español (lista, primero, resto), lo que facilita la comprensión para hablantes del idioma, pero podría confundir en contextos internacionales. La recursividad de la función permutaciones es correcta, pero su lógica puede ser difícil de seguir para principiantes.
Sigue buenas prácticas de programación
- La función
permutacionestiene un nombre claro y realiza una tarea específica. - No se validan entradas vacías dentro de la función (ej: si la lista contiene cadenas vacías como resultado de
split). - La variable
listase define en el ámbito global, lo que podría evitarse pasando parámetros explícitos. - El código no incluye manejo de errores para casos como espacios innecesarios (ej:
"a, b"con espacio tras la coma).
Recomendaciones de mejora
-
Validar palabras vacías en la entrada:
Eliminar elementos vacíos trassplitpara evitar permutaciones con cadenas vacías:lista = [palabra.strip() for palabra in entrada.split(",") if palabra.strip()] -
Eliminar comentarios redundantes:
Simplificar comentarios que repiten lo obvio (ej:"#REcorremos todas las posiciones de la lista"). -
Manejo de espacios en la entrada:
Usarstrip()al procesar palabras para evitar errores por espacios tras las comas. -
Claridad en la recursividad:
Añadir un comentario en la líneasubpermutaciones = permutaciones(resto)explicando que se llama recursivamente a la función. -
Uso de
itertools(solo para referencia):
Aclarar al alumno que, en un programa real, se usaríaitertools.permutationspara simplificar el código, pero que en esta práctica debe evitarse como se indica en el enunciado. -
Estructura de control para listas vacías:
Aunque el programa ya maneja listas vacías en elif not lista, se podría integrar esta validación dentro de la funciónpermutacionespara mayor robustez.