diff --git a/Ejercicio1.ipynb b/Ejercicio1.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..e2638e894657c1265115dfafa0d2b00f9385626d --- /dev/null +++ b/Ejercicio1.ipynb @@ -0,0 +1,147 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Ejercicio No. 1 - Lista de palabras\n", + "\n", + "**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 +}