Escriba un programa en python que acepte una lista de palabras separadas por guiones, e imprima de vuelta las mismas palabras, sin repetición y nuevamente separadas por guiones, después de ordenarlas alfabéticamente.
Ejemplo de entrada: naranja-avión-melodía-tupla-avión
Salida esperada: avión-melodía-naranja-tupla
Iniciamos pidiendo al usuario una lista de palabras conectadas con guiones. (Esperamos que el usuario NO introduzca espacios en blanco).
Por ejemplo, puede ingresar: naranja-avión-melodía-tupla-avión
Para ello usamos el comando input(), el cual permite pedir al usuario información a traves de la pantalla; esta informacion se guarda en una variable de tipo "string".
En nuestro caso llamamos a esta variable palabras. A esta variable le agregamos un guion en el extremo derecho. El porque de esta accion se expondra mas adelante.
palabras=input("""Ingrese una lista de palabras separadas
por guiones sin dejar epacios;
se retornaran las palabras ordenadas
alfabeticamente y sin repeticiones
""")
# Le agrego un guion al final del string original(para que funcione el
# proceso que me invente)
palabras=palabras+"-"
# Creo la lista vacia que va a contener las palabras individuales
lista_de_palabras=[]
En la celda siguiente se ejecuta el proceso que permite extraer cada una de las palabras que el usuario ingresó, las cuales estan guardadas en UN solo string, que llamamos palabras.
Creamos una variable nueva llamada contador. Antes del ciclo for, esta variable es un string vacio.
Hacemos un ciclo for que recorre la cadena de caracteres palabra, y vamos guardando cada uno de estos caracteres en la variable contador.
Cuando uno de los caracteres en palabra coincide con un guion (-), quiere decir que la variable contador "tiene" la primera palabra.
Apendamos esta palabra a la lista lista_de_palabras y reiniciamos la variable contador a un caracter vacio; de manera que en la siguiente iteración del for, esta variable empiece a guardar la segunda palabra.
contador=""
for x in palabras:
contador=contador+x
if x=="-":
lista_de_palabras.append(contador[:-1])
#Sin el [:-1] se añade la palabra con el guion delante
contador=""
# lista_de_palabras es una lista que contiene las palabras del string original.
print("Lista que contiene las palabras ingresadas sin guiones:")
print(lista_de_palabras)
Lista que contiene las palabras ingresadas sin guiones: ['naranja', 'avión', 'melodía', 'tupla', 'avión', 'naranja', 'avión', 'melodía', 'tupla', 'avión', 'naranja', 'avión', 'melodía', 'tupla', 'avión', 'naranja', 'avión', 'melodía', 'tupla', 'avión']
lista_de_palabras a un conjunto que llamamos set_palabras_sin_repetir; ya que este tipo de estructuras NO permiten la repeticion de elementos. set_palabras_sin_repetir=set(lista_de_palabras)
print("conjunto con las palabras ingresadas sin repetir")
print(set_palabras_sin_repetir)
conjunto con las palabras ingresadas sin repetir
{'tupla', 'naranja', 'melodía', 'avión'}
La estructura de conjunto no nos permite hacer un ordenamiento alfabetico; para ello debemos volver a las listas, las cuales tienen el metodo .sort().
Creamos entonces una lista llamada lista_palabras_sin_repetir, la cual contiene cada una de las palabras del string original, esta vez sin repeticiones. Luego aplicamos el metodo .sort() a esta lista.
list_palabras_sin_repetir=list(set_palabras_sin_repetir)
print("lista de palabras ingresadas sin repetir")
print(list_palabras_sin_repetir)
print("")
# Ordenamos las palabras alfabeticamente
list_palabras_sin_repetir.sort()
print("lista de palabras ingresadas sin repetir, ordenadas alfabeticamente")
print(list_palabras_sin_repetir)
lista de palabras ingresadas sin repetir ['tupla', 'naranja', 'melodía', 'avión'] lista de palabras ingresadas sin repetir, ordenadas alfabeticamente ['avión', 'melodía', 'naranja', 'tupla']
Para retornar las palabras como se pide en el ejercico, las concatenamos usando un ciclo for que recorre los elementos de la lista list_palabras_sin_repetir.
Creamos una variable tipo strin llamada semi_final_string, la cual empieza siendo un caracter vacio "".
En cada iteración del ciclo for concatenamos las palabras de la lista list_palabras_sin_repetir junto con un guion.
Finalmente, retornamos una variable tipo string que llamamos final_string, la cual es contiene los elementos de la variable semi_final_string desde la posición [1] debido a que el proceso anteriormente descrito coloca un guion - antes de guardar la primera palabra.
# Hacemos el string final uniendo los elementos de list_palabras_sin_repetir
semi_final_string=""
for a in list_palabras_sin_repetir:
semi_final_string=semi_final_string+"-"+a
# Me toca hacerlo asi porque el semi_final_string tiene un "-" en la posicion 0.
final_string=semi_final_string[1:]
print("""
A continuación se muestra un string de las palabras ingresadas,
sin repeticion, y ordenadas alfabeticamente, separadas por guiones
""")
print(" ")
print(final_string)
A continuación se muestra un string de las palabras ingresadas, sin repeticion, y ordenadas alfabeticamente, separadas por guiones avión-melodía-naranja-tupla