"Ingrese una lista de palabras separadas por guiones sin dejar epacios; se retornaran las palabras ordenadas alfabeticamente y sin repeticiones hola-como-estas\n"
"Ingrese una lista de palabras separadas por guiones sin dejar epacios; se retornaran las palabras ordenadas alfabeticamente y sin repeticiones naranja-mango-perro-pera-casa-avion-perro\n"
]
]
}
}
],
],
...
@@ -63,7 +63,7 @@
...
@@ -63,7 +63,7 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": 3,
"execution_count": 7,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
...
@@ -77,14 +77,30 @@
...
@@ -77,14 +77,30 @@
"source": [
"source": [
"## Separacion de las palabras\n",
"## Separacion de las palabras\n",
"\n",
"\n",
"En la celda siguiente se ejecuta el proceso que permite extraer cada una de las palabras que el usuario ingresó, las cuales estan guardadas como en **UN** solo string, que llamamos `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`.\n",
"\n",
"+ Creamos una variable nueva llamada contador. Antes del ciclo `for`, esta variable es un string vacio.\n",
"\n",
"+ Hacemos un ciclo ``for`` que recorre la cadena de caracteres ``palabra``, y vamos guardando cada uno de estos caracteres en la variable ``contador``.\n",
"\n",
"+ Cuando uno de los caracteres en ``palabra`` coincide con un guion (``-``), quiere decir que la variable ``contador`` \"tiene\" la primera palabra.\n",
"\n",
"+ 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. "
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": 8,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Lista que contiene las palabras ingresadas sin guiones: ['naranja', 'mango', 'perro', 'pera', 'casa', 'avion', 'perro']\n"
"# Aqui ensaye como quitarle el ultimo caracter a un string\n",
"# Aqui ensaye como quitarle el ultimo caracter a un string\n",
...
@@ -101,27 +117,96 @@
...
@@ -101,27 +117,96 @@
" #Sin el [:-1] se añade la palabra con el guion delante\n",
" #Sin el [:-1] se añade la palabra con el guion delante\n",
" contador=\"\"\n",
" contador=\"\"\n",
"\n",
"\n",
"\n",
"# lista_de_palabras es una lista que contiene las palabras del string original.\n",
"# lista_de_palabras es una lista que contiene las palabras del string original.\n",
"print(\"Lista que contiene las palabras ingresadas sin guiones: \",lista_de_palabras)"
"# print(\"Lista que contiene las palabras ingresadas sin guiones: \",lista_de_palabras)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Eliminacion de las palabras repetidas\n",
"\n",
"+ Para eliminar las palabras repetidas, convertimos la lista ``lista_de_palabras`` a un _conjunto_ que llamamos ``set_palabras_sin_repetir``; ya que este tipo de estructuras **NO** permiten la repeticion de elementos. "
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": 9,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"set de palabras ingresadas sin repetir {'naranja', 'perro', 'mango', 'avion', 'pera', 'casa'}\n"
"print(\"set de palabras ingresadas sin repetir \",set_palabras_sin_repetir)\n",
"print(\"set de palabras ingresadas sin repetir \",set_palabras_sin_repetir)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Ordanacion alafabetica\n",
"\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()``. \n",
"\n",
"\n",
"+ 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."
"print(\"lista de palabras ingresadas sin repetir \",list_palabras_sin_repetir)\n",
"# print(\"lista de palabras ingresadas sin repetir \",list_palabras_sin_repetir)\n",
"\n",
"\n",
"# Ordenamos las palabras alfabeticamente\n",
"# Ordenamos las palabras alfabeticamente\n",
"list_palabras_sin_repetir.sort()\n",
"list_palabras_sin_repetir.sort()\n",
"print(\"lista de palabras ingresadas sin repetir, ordenadas alfabeticamente \",list_palabras_sin_repetir)\n",
"# print(\"lista de palabras ingresadas sin repetir, ordenadas alfabeticamente \",list_palabras_sin_repetir)\n",
"# Hacemos el string final uniendo los elementos de list_palabras_sin_repetir\n",
"# Hacemos el string final uniendo los elementos de list_palabras_sin_repetir"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Retornamos las palabras con el formato que se pide en ejercicio\n",
"\n",
"+ 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``.\n",
"\n",
"+ Creamos una variable tipo _strin_ llamada ``semi_final_string``, la cual empieza siendo un caracter vacio ``\"\"``.\n",
"\n",
"+ En cada iteración del ciclo ``for`` concatenamos las palabras de la lista ``list_palabras_sin_repetir`` junto con un guion.\n",
"\n",
"+ 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."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" \n",
" \n",
"A continuación se muestra un string de las palabras ingresadas,\n",
"sin repeticion, y ordenadas alfabeticamente, separadas por guiones\n",
*Mi nombre es Jesus David Bermudez Sanchez, soy estudiante de la Maestria en Fisica de la Universidad Nacional de Colombia, Sede Bogotá*
*Mi nombre es Jesus David Bermudez Sanchez, soy estudiante de la Maestria en Fisica de la Universidad Nacional de Colombia, Sede Bogotá*
---
---
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# El problema a resolver es el siguiente
# El problema a resolver es el siguiente
## Lista de palabras
## Lista de palabras
Escriba un programa en python que acepte una lista de palabras separadas por guiones, e imprima de vuelta las
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.
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
Ejemplo de entrada: naranja-avión-melodía-tupla-avión
Salida esperada: avión-melodía-naranja-tupla
Salida esperada: avión-melodía-naranja-tupla
---
---
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Iniciamos pidiendo al usuario una lista de palabras conectadas con guiones. (Esperamos que el usuario **NO** introduzca espacios en blanco).
Iniciamos pidiendo al usuario una lista de palabras conectadas con guiones. (Esperamos que el usuario **NO** introduzca espacios en blanco).
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".
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.
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.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
palabras=input(
palabras=input(
"Ingrese una lista de palabras separadas por guiones sin dejar epacios; \
"Ingrese una lista de palabras separadas por guiones sin dejar epacios; \
se retornaran las palabras ordenadas alfabeticamente y sin repeticiones")
se retornaran las palabras ordenadas alfabeticamente y sin repeticiones")
# Le agrego un guion al final del string original(para que funcione el
# Le agrego un guion al final del string original(para que funcione el
# proceso que me invente)
# proceso que me invente)
palabras=palabras+"-"
palabras=palabras+"-"
```
```
%% Output
%% Output
Ingrese una lista de palabras separadas por guiones sin dejar epacios; se retornaran las palabras ordenadas alfabeticamente y sin repeticiones hola-como-estas
Ingrese una lista de palabras separadas por guiones sin dejar epacios; se retornaran las palabras ordenadas alfabeticamente y sin repeticiones naranja-mango-perro-pera-casa-avion-perro
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# Creo la lista vacia que va a contener las palabras individuales
# Creo la lista vacia que va a contener las palabras individuales
lista_de_palabras=[]
lista_de_palabras=[]
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## Separacion de las palabras
## Separacion de las 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 como en **UN** solo string, que llamamos `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.
#Sin el [:-1] se añade la palabra con el guion delante
#Sin el [:-1] se añade la palabra con el guion delante
contador=""
contador=""
# lista_de_palabras es una lista que contiene las palabras del string original.
# lista_de_palabras es una lista que contiene las palabras del string original.
print("Lista que contiene las palabras ingresadas sin guiones: ",lista_de_palabras)
# print("Lista que contiene las palabras ingresadas sin guiones: ",lista_de_palabras)
```
```
%% Output
Lista que contiene las palabras ingresadas sin guiones: ['naranja', 'mango', 'perro', 'pera', 'casa', 'avion', 'perro']
%% Cell type:markdown id: tags:
## Eliminacion de las palabras repetidas
+ Para eliminar las palabras repetidas, convertimos la lista ``lista_de_palabras`` a un _conjunto_ que llamamos ``set_palabras_sin_repetir``; ya que este tipo de estructuras **NO** permiten la repeticion de elementos.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
set_palabras_sin_repetir=set(lista_de_palabras)
set_palabras_sin_repetir=set(lista_de_palabras)
print("set de palabras ingresadas sin repetir ",set_palabras_sin_repetir)
print("set de palabras ingresadas sin repetir ",set_palabras_sin_repetir)
```
%% Output
set de palabras ingresadas sin repetir {'naranja', 'perro', 'mango', 'avion', 'pera', 'casa'}
%% Cell type:markdown id: tags:
## Ordanacion alafabetica
+ 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.
print("lista de palabras ingresadas sin repetir ",list_palabras_sin_repetir)
# print("lista de palabras ingresadas sin repetir ",list_palabras_sin_repetir)
# Ordenamos las palabras alfabeticamente
# Ordenamos las palabras alfabeticamente
list_palabras_sin_repetir.sort()
list_palabras_sin_repetir.sort()
print("lista de palabras ingresadas sin repetir, ordenadas alfabeticamente ",list_palabras_sin_repetir)
# print("lista de palabras ingresadas sin repetir, ordenadas alfabeticamente ",list_palabras_sin_repetir)
# Hacemos el string final uniendo los elementos de list_palabras_sin_repetir
# Hacemos el string final uniendo los elementos de list_palabras_sin_repetir
```
%% Cell type:markdown id: tags:
## Retornamos las palabras con el formato que se pide en ejercicio
+ 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.
%% Cell type:code id: tags:
``` python
semi_final_string=""
semi_final_string=""
forainlist_palabras_sin_repetir:
forainlist_palabras_sin_repetir:
semi_final_string=semi_final_string+"-"+a
semi_final_string=semi_final_string+"-"+a
# Me toca hacerlo asi porque el semi_final_string tiene un "-" en la posicion 0.
# Me toca hacerlo asi porque el semi_final_string tiene un "-" en la posicion 0.
final_string=semi_final_string[1:]
final_string=semi_final_string[1:]
print("")
print("")
print("")
print("")
print("A continuación se muestra un string de las palabras ingresadas,")
print("A continuación se muestra un string de las palabras ingresadas,")
print("sin repeticion, y ordenadas alfabeticamente, separadas por guiones")
print("sin repeticion, y ordenadas alfabeticamente, separadas por guiones")
# Me toca imprimirlo usando [1:] porque el final_string tiene un "-" en la posicion 0.
# Me toca imprimirlo usando [1:] porque el final_string tiene un "-" en la posicion 0.