"**Enunciado:** Escriba un programa en python que acepte una lista de palabras separadas por guiones, e\n",
"imprima de vuelta las mismas palabras, sin repetición y nuevamente separadas por guiones,\n",
"después de ordenarlas alfabéticamente.\n",
"\n",
"**Solución:** Hola, mi nombre es *Sebastian Ordoñez* (ordonezs), para solucionar este ejercicio opté por implementar una única función, `order`, la cual realiza en su totalidad lo requerido. En las líneas de código se encuentra documentación un poco más detallada, así como comentarios de qué hacen las líneas más importantes "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"def order(lista:str)->str:\n",
" \"\"\"\n",
" Esta función recibe una cadena (str) que contiene palabras separadas por guiones y retorna también una cadena\n",
" con las palabras nuevamente separadas por guiones, ordenadas alfabéticamente y sin repetición.\n",
" \n",
" Input\n",
" ------\n",
" lista (str): cadena que contiene las palabras separadas por guiones.\n",
" \n",
" Output\n",
" ------\n",
" final (str): cadena con las palabras separadas por guiones, ordenadas alfabéticamente y sin repetición.\n",
" \"\"\"\n",
" \n",
" lista += \"-\" # A la cadena inicial se le añade un guión al final para evitar problemas con la última palabra.\n",
" words = [] # Lista que contendrá todas las palabras que se encuentran en la cadena inicial () lista\n",
" word = \"\"\n",
" for x in lista:\n",
" if x!=\"-\":\n",
" word += x\n",
" else:\n",
" words.append(word)\n",
" word = \"\"\n",
" words = list(dict.fromkeys(words)) # Jugando con los tipos de objeto se eliminan las palabras repetidas\n",
" words = sorted(words) # Función para ordenar las palabras alfabéticamente\n",
" \n",
" final = \"\" # Cadena final con las palabras en la lista \"words\"\n",
" for y in words:\n",
" if words.index(y)!=len(words)-1:\n",
" final += y+\"-\"\n",
" else:\n",
" final += y\n",
" \n",
" return final"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ahora que hemos terminado de construir la función `order`, la cual realiza lo requerido por el problema, entonces pasamos a probarla. Para esto, podemos usar el ejemplo sugerido en el enunciado mismo, tal que:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'avión-melodía-naranja-tupla'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"order(\"naranja-avión-melodía-tupla-avión\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'naranja'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"order(\"naranja-naranja-naranja\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'a-b-c-d-e-f-g-h'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"order(\"a-b-c-d-f-g-e-h\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
%% Cell type:markdown id: tags:
# Ejercicio No. 1 - Lista de palabras
**Enunciado:** 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:** Hola, mi nombre es *Sebastian Ordoñez* (ordonezs), para solucionar este ejercicio opté por implementar una única función, `order`, la cual realiza en su totalidad lo requerido. En las líneas de código se encuentra documentación un poco más detallada, así como comentarios de qué hacen las líneas más importantes
%% Cell type:code id: tags:
``` python
deforder(lista:str)->str:
"""
Esta función recibe una cadena (str) que contiene palabras separadas por guiones y retorna también una cadena
con las palabras nuevamente separadas por guiones, ordenadas alfabéticamente y sin repetición.
Input
------
lista (str): cadena que contiene las palabras separadas por guiones.
Output
------
final (str): cadena con las palabras separadas por guiones, ordenadas alfabéticamente y sin repetición.
"""
lista+="-"# A la cadena inicial se le añade un guión al final para evitar problemas con la última palabra.
words=[]# Lista que contendrá todas las palabras que se encuentran en la cadena inicial () lista
word=""
forxinlista:
ifx!="-":
word+=x
else:
words.append(word)
word=""
words=list(dict.fromkeys(words))# Jugando con los tipos de objeto se eliminan las palabras repetidas
words=sorted(words)# Función para ordenar las palabras alfabéticamente
final=""# Cadena final con las palabras en la lista "words"
foryinwords:
ifwords.index(y)!=len(words)-1:
final+=y+"-"
else:
final+=y
returnfinal
```
%% Cell type:markdown id: tags:
Ahora que hemos terminado de construir la función `order`, la cual realiza lo requerido por el problema, entonces pasamos a probarla. Para esto, podemos usar el ejemplo sugerido en el enunciado mismo, tal que: