{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Estudiante: María José Ramos \n",
"\n",
"# Análisis de Datos\n",
"## Módulo 1: Research Software Engineering in Python\n",
"\n",
"### Tarea 1: Ejercicios para practicar las bases de Python.\n",
"\n",
"**Ejercicio 1: Lista de palabras**\n",
"\n",
"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",
"Ejemplo de entrada: naranja-avión-melodía-tupla-avión \n",
"Salida esperada: avión-melodía-naranja-tupla"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*1. Creando el código*\n",
"\n",
"Para resolver este problema, el código aceptará una entrada tipo string. Al convertir el string en listas, cuyos elementos son las palabras dadas, se pueden aplicar cambios para ordenar a las mismas y quitar sus repeticiones. A la lista final, con las palabras en el orden adecuado y sin repeticiones se convierte en string y se devuelve como salida.\n",
"Nota: a medida que desarrollo el código, usaré el ejemplo de entrada y print() luego de los comandos, para comprobar que estoy obteniendo los resultados deseados en cada línea. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Escriba una lista de palabras separadas por guiones: naranja-avión-melodía-tupla-avión\n",
"naranja-avión-melodía-tupla-avión\n"
]
}
],
"source": [
"# Defino la variable que almacenará el input\n",
"palabras = str(input('Escriba una lista de palabras separadas por guiones: '))\n",
"print(palabras)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['naranja', 'avión', 'melodía', 'tupla', 'avión']\n"
]
}
],
"source": [
"# Se convierte la entrada en lista usando .split\n",
"listaPal = palabras.split('-')\n",
"print(listaPal)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['avión', 'avión', 'melodía', 'naranja', 'tupla']\n"
]
}
],
"source": [
"# Con sorted() la lista se ordena en orden alfabético:\n",
"listaPalOrd = sorted(listaPal)\n",
"print(listaPalOrd)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['avión', 'melodía', 'naranja', 'tupla']\n"
]
}
],
"source": [
"# Defino una nueva lista vacía para almacenar las palabras no repetidas\n",
"listaSinRep = []\n",
"# Y se agrega cada elemento de listaPalOrd solo si el elemento no está \n",
"# ya incluido. Así, se obtienen solo los elementos sin repetición.\n",
"[listaSinRep.append(i) for i in listaPalOrd if i not in listaSinRep]\n",
"print(listaSinRep)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"avión-melodía-naranja-tupla\n"
]
}
],
"source": [
"# Utilizando .join se convierte listaSinRep en un string, con elementos\n",
"# separados por guion.\n",
"palabrasSeparadas= '-'.join(listaSinRep)\n",
"# Así, palabrasSeparadas es el output esperado:\n",
"print(palabrasSeparadas)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*2. Probando el código con otros ejemplos*\n",
"\n",
"A continuación, definiré una función que guardará el código creado anteriormente, omitiendo los print luego de cada comando y solo conservando el print final. Luego, probaré la función con más entradas, para confirmar su funcionalidad.\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Escriba una lista de palabras separadas por guiones: datos-ciencia-python-ciencia-ciencia-jupyter\n",
"Las palabras ordenadas alfabéticamente, sin repetición y separadas por guion: \n",
"ciencia-datos-jupyter-python\n"
]
}
],
"source": [
"\n",
"def ordenarSinRep(palabras):\n",
" listaPal = palabras.split('-')\n",
" listaPalOrd = sorted(listaPal)\n",
" listaSinRep = []\n",
" [listaSinRep.append(i) for i in listaPalOrd if i not in listaSinRep]\n",
" palabrasSeparadas= '-'.join(listaSinRep)\n",
" print('Las palabras ordenadas alfabéticamente, sin repetición y ' \n",
" f'separadas por guion: \\n{palabrasSeparadas}')\n",
" return\n",
"\n",
"palabras = str(input('Escriba una lista de palabras separadas por guiones: '))\n",
"ordenarSinRep(palabras)\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Escriba una lista de palabras separadas por guiones: conga-datos-instrumentación-módulo-teoría\n",
"Las palabras ordenadas alfabéticamente, sin repetición y separadas por guion: \n",
"conga-datos-instrumentación-módulo-teoría\n"
]
}
],
"source": [
"# Un ejemplo más:\n",
"\n",
"palabras = str(input('Escriba una lista de palabras separadas por guiones: '))\n",
"ordenarSinRep(palabras)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Y como se ha demostrado, el código funciona."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[NbConvertApp] Converting notebook ejercicio1.ipynb to html\n",
"[NbConvertApp] Writing 581588 bytes to ejercicio1.html\n"
]
}
],
"source": [
"! jupyter nbconvert ejercicio1.ipynb --to html --output ejercicio1.html"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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
}