{ "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 }