Usuario: vivasm.
Nombre: Mariana Vivas.
Institución: Universidad Central de Venezuela.
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.
Primero definimos las variables a utilizar:
#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=[]
Revisamos que se esté guardando el texto en la variable 'text' y que sea del tipo 'str':
print('{} es de tipo {}'.format(text,type(text)))
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:
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':
print(lista)
Queremos la salida tipo 'str', ordenada por orden alfabético y sin repetición de palabras, por lo tanto:
#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)))