Identificación

Usuario: vivasm.
Nombre: Mariana Vivas.
Institución: Universidad Central de Venezuela.

Ejercicio 1 - Lista de palabras

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.

Solución

Primero definimos las variables a utilizar:

In [1]:
#En 'text' estará la entrada del usuario
text=input('Inserte una lista de palabras separadas por guiones (ej. manzana-pera-piña-aguacate-manzana): ')
index = 0
lastindex=0
lista=[]
Inserte una lista de palabras separadas por guiones (ej. manzana-pera-piña-aguacate-manzana): manzana-pera-piña-aguacate-manzana

Revisamos que se esté guardando el texto en la variable 'text' y que sea del tipo 'str':

In [2]:
print('{} es de tipo {}'.format(text,type(text)))
manzana-pera-piña-aguacate-manzana es de tipo <class 'str'>

Vamos a almacenar las palabra en la variable 'lista' que es tipo lista. Por lo tanto, necesitamos hallar donde empieza y termina cada palabra, de manera que podamos extraerla:

In [3]:
while index < len(text):
        index = text.find('-', index) #En la variable index almacenamos la posición de los guiones
        if index == -1: #Si no encuentra guiones
            #Inserta la última palabra a la lista
            lista.append(text[lastindex:]) 
            break
            
        #Inserta en la lista la palabra entre dos guiones
        lista.append(text[lastindex:index]) 
        
        #Aumentamos el indice para que empiece el loop despues del último guión que consiguió
        index += len('-') 
        
        #Guardamos el último indice hallado
        lastindex=index 

Revisamos que estemos obteniendo en la lista las palabras que se encuentran el la variable 'text':

In [4]:
print(lista)
['manzana', 'pera', 'piña', 'aguacate', 'manzana']

Queremos la salida tipo 'str', ordenada por orden alfabético y sin repetición de palabras, por lo tanto:

In [5]:
#si convertimos la lista en un set, las entradas iguales se eliminan
duplicados=set(lista)

#convertimos el set en lista nuevamente y lo ordenamos por orden alfabético con .sort()
lista=list(duplicados)
lista.sort()

#imprimimos la lista de palabras separada por guiones
print('lista de entrada: {}'.format(text))
print('lista de salida: {}'.format('-'.join(lista)))
lista de entrada: manzana-pera-piña-aguacate-manzana
lista de salida: aguacate-manzana-pera-piña