"sin repeticion, y ordenadas alfabeticamente, separadas por guiones\n",
"sin repeticion, y ordenadas alfabeticamente, separadas por guiones\n",
"\"\"\")\n",
"\"\"\")\n",
"print(\" \")\n",
"print(\" \")\n",
"\n",
"print(final_string)"
"print(final_string)"
]
]
},
},
...
...
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# *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).
Por ejemplo, puede ingresar: ``naranja-avión-melodía-tupla-avión``
Por ejemplo, puede ingresar: ``naranja-avión-melodía-tupla-avión``
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("""Ingrese una lista de palabras separadas
palabras=input("""Ingrese una lista de palabras separadas
por guiones sin dejar epacios;
por guiones sin dejar epacios;
se retornaran las palabras ordenadas
se retornaran las palabras ordenadas
alfabeticamente y sin repeticiones
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
Ingrese una lista de palabras separadas
por guiones sin dejar epacios;
por guiones sin dejar epacios;
se retornaran las palabras ordenadas
se retornaran las palabras ordenadas
alfabeticamente y sin repeticiones
alfabeticamente y sin repeticiones
naranja-avión-melodía-tupla-avión
naranja-avión-melodía-tupla-avión
%% 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 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.
+ 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``.
+ 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.
+ 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.
+ 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 id: tags:
%% Cell type:code id: tags:
``` python
``` python
contador=""
contador=""
forxinpalabras:
forxinpalabras:
contador=contador+x
contador=contador+x
ifx=="-":
ifx=="-":
lista_de_palabras.append(contador[:-1])
lista_de_palabras.append(contador[:-1])
#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:")
print("Lista que contiene las palabras ingresadas sin guiones:")
print(lista_de_palabras)
print(lista_de_palabras)
```
```
%% Output
%% Output
Lista que contiene las palabras ingresadas sin guiones:
Lista que contiene las palabras ingresadas sin guiones:
+ 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.
+ 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("conjunto con las palabras ingresadas sin repetir")
print("conjunto con las palabras ingresadas sin repetir")
print(set_palabras_sin_repetir)
print(set_palabras_sin_repetir)
```
```
%% Output
%% Output
conjunto con las palabras ingresadas sin repetir
conjunto con las palabras ingresadas sin repetir
{'tupla', 'naranja', 'melodía', 'avión'}
{'tupla', 'naranja', 'melodía', 'avión'}
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## Ordenacion alafabetica
## Ordenacion 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()``.
+ 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.
+ 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, ordenadas alfabeticamente")
print("lista de palabras ingresadas sin repetir, ordenadas alfabeticamente")
print(list_palabras_sin_repetir)
print(list_palabras_sin_repetir)
```
```
%% Output
%% Output
lista de palabras ingresadas sin repetir
lista de palabras ingresadas sin repetir
['tupla', 'naranja', 'melodía', 'avión']
['tupla', 'naranja', 'melodía', 'avión']
lista de palabras ingresadas sin repetir, ordenadas alfabeticamente
lista de palabras ingresadas sin repetir, ordenadas alfabeticamente
['avión', 'melodía', 'naranja', 'tupla']
['avión', 'melodía', 'naranja', 'tupla']
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## Retornamos las palabras con el formato que se pide en ejercicio
## 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``.
+ 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 ``""``.
+ 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.
+ 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.
+ 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:
%% Cell type:code id: tags:
``` python
``` python
# Hacemos el string final uniendo los elementos de list_palabras_sin_repetir
# Hacemos el string final uniendo los elementos de list_palabras_sin_repetir
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("""
A continuación se muestra un string de las palabras ingresadas,
A continuación se muestra un string de las palabras ingresadas,
sin repeticion, y ordenadas alfabeticamente, separadas por guiones
sin repeticion, y ordenadas alfabeticamente, separadas por guiones
""")
""")
print("")
print("")
print(final_string)
print(final_string)
```
```
%% Output
%% Output
A continuación se muestra un string de las palabras ingresadas,
A continuación se muestra un string de las palabras ingresadas,
sin repeticion, y ordenadas alfabeticamente, separadas por guiones
sin repeticion, y ordenadas alfabeticamente, separadas por guiones