"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.\n",
"\n",
"**Ejemplo de entrada:** naranja-avión-melodía-tupla-avión\n",
"Escriba una lista de palabras separadas or guíones: ola-hola-ala\n"
]
}
],
"source": [
"disordered_words = input('Escriba una lista de palabras separadas or guíones: ') # input() convierte todo input a string "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'ola-hola-ala'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disordered_words"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La estrategia es crear una lista de palabras a partir del string. La cual que se puede organizar fácilmente con métodos de las listas para luego devolver como un solo string."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Para crear la lista de palabras se irán añadiendo los caracteres del string en una variable hasta encontrar un guión, en cuyo caso se agrega el contenido de la variable a una lista y se resetea la variable donde se guardan los caracteres para almacenar la siguiente palabra."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"mywords = [] # en esta lista se almacenarán las palabras\n",
"word = '' # string vacío para almacenar los caracteres de cada palabra\n",
"for char in disordered_words: # iterando sobre los caracteres del string\n",
" if char != '-': # si el caracter no es - se añade a la palabra\n",
" word += char\n",
" else: # si el caracter es -, se añade la palabra a la lista y vacía la palabra\n",
" mywords.append(word)\n",
" word = ''\n",
"mywords.append(word) # añadiendo la última palabra"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['ola', 'hola', 'ala']"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mywords"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Usando los conjuntos se eliminan duplicados y luego se organiza usando *sorted()*"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['ala', 'hola', 'ola']"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted(list(set(mywords))) #se orgniza alfabéticamente y eliminan repeticiones"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['ola', 'hola', 'ala']"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mywords"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finalmente se usa la función *join()* de python para unir en un string las palabras. La lista que se unió fue una en la cual todas las palabras finalizan con un guión excepto la última."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"ordered_words = ''.join([word + '-' for word in mywords])[:-1]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'ola-hola-ala'"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ordered_words"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Organizando todo en una función"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def word_orderer(disordered_words):\n",
" \"\"\"Sort alphabetically a string with a list of words separated by a hyphen eliminating repetitions.\"\"\"\n",
" mywords = [] # en esta lista se almacenarán las palabras\n",
" word = '' # string vacío para almacenar los caracteres de cada palabra\n",
" for char in disordered_words: # iterando sobre los caracteres del string\n",
" if char != '-': # si el caracter no es - se añade a la palabra\n",
" word += char\n",
" else: # si el caracter es -, se añade la palabra a la lista y vacía la palabra\n",
" mywords.append(word)\n",
" word = ''\n",
" mywords.append(word) # añadiendo la última palabra\n",
" mywords = sorted(list(set(mywords))) # se organiza alfabéticamente y eliminan repeticiones\n",
" return ''.join([word + '-' for word in mywords])[:-1]"
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
%% Cell type:markdown id: tags:
## Solución
%% Cell type:markdown id: tags:
Primero se adquieren las palabras
%% Cell type:code id: tags:
``` python
disordered_words=input('Escriba una lista de palabras separadas or guíones: ')# input() convierte todo input a string
```
%% Output
Escriba una lista de palabras separadas or guíones: ola-hola-ala
%% Cell type:code id: tags:
``` python
disordered_words
```
%% Output
'ola-hola-ala'
%% Cell type:markdown id: tags:
La estrategia es crear una lista de palabras a partir del string. La cual que se puede organizar fácilmente con métodos de las listas para luego devolver como un solo string.
%% Cell type:markdown id: tags:
Para crear la lista de palabras se irán añadiendo los caracteres del string en una variable hasta encontrar un guión, en cuyo caso se agrega el contenido de la variable a una lista y se resetea la variable donde se guardan los caracteres para almacenar la siguiente palabra.
%% Cell type:code id: tags:
``` python
mywords=[]# en esta lista se almacenarán las palabras
word=''# string vacío para almacenar los caracteres de cada palabra
forcharindisordered_words:# iterando sobre los caracteres del string
ifchar!='-':# si el caracter no es - se añade a la palabra
word+=char
else:# si el caracter es -, se añade la palabra a la lista y vacía la palabra
mywords.append(word)
word=''
mywords.append(word)# añadiendo la última palabra
```
%% Cell type:code id: tags:
``` python
mywords
```
%% Output
['ola', 'hola', 'ala']
%% Cell type:markdown id: tags:
Usando los conjuntos se eliminan duplicados y luego se organiza usando *sorted()*
%% Cell type:code id: tags:
``` python
sorted(list(set(mywords)))#se orgniza alfabéticamente y eliminan repeticiones
```
%% Output
['ala', 'hola', 'ola']
%% Cell type:code id: tags:
``` python
mywords
```
%% Output
['ola', 'hola', 'ala']
%% Cell type:markdown id: tags:
Finalmente se usa la función *join()* de python para unir en un string las palabras. La lista que se unió fue una en la cual todas las palabras finalizan con un guión excepto la última.