{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Ejercicio 1: Transformar cadenas\n", "Hay varias operaciones que puedes realizar en las cadenas cuando las manipulamos. En este ejercicio, usarás métodos de cadena para modificar el texto con hechos sobre la Luna y luego extraerás información para crear un breve resumen.\n", "\n", "> **Nota**\n", "> Dedica unos minutos a tratar de encontrar una solución. Luego desplázate hacia abajo hasta la parte inferior para ver si has logrado compilar el programa de acuerdo con las especificaciones." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "El texto con el que trabajarás es el siguiente: " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "text = \"\"\"Interesting facts about the Moon. The Moon is Earth's only satellite. There are several interesting facts about the Moon and how it affects life here on Earth. \n", "On average, the Moon moves 4cm away from the Earth every year. This yearly drift is not significant enough to cause immediate effects on Earth. The highest daylight temperature of the Moon is 127 C.\"\"\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Primero, divide el texto en cada oración para trabajar con su contenido:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Añade el código necesario" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ahora, define algunas palabras clave para búsqueda que te ayudarán a determinar si una oración contiene un hecho." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Define las palabras pista: average, temperature y distance suenan bien" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cre un bucle para imprimir solo datos sobre la Luna que estén relacionados con las palabras clave definidas anteriormente:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Ciclo for para recorrer la cadena" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finalmente, actualiza el bucle(ciclo) para cambiar _C_ a _Celsius_:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Ciclo para cambiar C a Celsius" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> Recuerda: Lo importante es intentarlo, puedes auxiliarte de internet, libros, etc. El objetivo de una kata es la comprobación de la comprensión de la lección y su aplicación inmediata a la resolución de problemas. Go for it!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Ejercicio 2: Formateando Cadenas\n", "\n", "Saber cómo dar formato a las cadenas es esencial cuando se presenta información de un programa. Hay algunas maneras diferentes de lograr esto en Python. En este ejercicio, se utilizan variables que contienen datos clave sobre la gravedad en varias lunas y luego se utilizan para dar formato e imprimir la información.\n", "\n", "El formato tiene que acomodar información sobre otras lunas, por lo que debe ser genérico.\n", "\n", "En lugar de reemplazar las variables en una cadena larga como parte de un párrafo, utiliza la información para presentarla en un formato tabular. El resultado debería verse así:\n", "\n", "```\n", "Gravity Facts about Ganymede\n", "-------------------------------------------------------------------------------\n", "Planet Name: Mars\n", "Gravity on Ganymede: 1.4300000000000002 m/s2\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Datos con los que vas a trabajar\n", "name = \"Moon\"\n", "gravity = 0.00162 # in kms\n", "planet = \"Earth\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Primero, crea un título para el texto. Debido a que este texto trata sobre la gravedad en la Tierra y la Luna, úsalo para crear un título significativo. Utiliza las variables en lugar de escribir." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Creamos el título" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ahora crea una plantilla de cadena multilínea para contener el resto de la información. En lugar de usar kilómetros, debes convertir la distancia a metros multiplicando por 1,000." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Creamos la plantilla" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finalmente, usa ambas variables para unir el título y los hechos." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Unión de ambas cadenas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ahora usa información de una luna diferente para ver si la plantilla todavía funciona.\n", "\n", "Datos muestra: \n", "```\n", "planeta = 'Marte '\n", "gravedad = 0.00143\n", "nombre = 'Ganímedes'\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Comprueba la plantilla\n", "# print(nombre_plantilla)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La salida no muestra información sobre Marte. Todavía muestra información sobre la Luna. Esto sucede porque las cadenas f están ansiosas en su evaluación, por lo que las variables una vez asignadas no se pueden reasignar. Para evitar este problema, vuelva a hacer la plantilla para utilizar .format():" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Nueva plantilla" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Debido a que .format() no permite expresiones, la gravedad en Ganímedes es incorrecta. Asegúrese de que la operación se realiza fuera de la plantilla de formato e imprima de nuevo para ver el resultado de trabajo." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Pista: print(nueva_plantilla.format(variables))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Soluciones" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ejercicio 1" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Divide el texto\n", "text_parts = text.split('. ')\n", "text_parts" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Palabras clave\n", "key_words = [\"average\", \"temperature\", \"distance\"]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Ciclo for para recorrer la cadena\n", "for sentence in text_parts:\n", " for key_word in key_words:\n", " if key_word in sentence:\n", " print(sentence)\n", " break" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Ciclo para cambiar C a Celsius\n", "for sentence in text_parts:\n", " for key_word in key_words:\n", " if key_word in sentence:\n", " print(sentence.replace(' C', ' Celsius'))\n", " break" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ejercicio 2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Datos con los que vamos a trabajar\n", "\n", "planeta = 'Marte '\n", "gravedad = 0.00143\n", "nombre = 'Ganímedes'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Creamos el título\n", "title = f'datos de gravedad sobre {nombre}'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Creamos la plantilla\n", "hechos = f\"\"\"{'-'*80} \n", "Nombre del planeta: {planeta} \n", "Gravedad en {nombre}: {gravedad * 1000} m/s2 \n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Unión de ambas cadenas\n", "template = f\"\"\"{title.title()} \n", "{hechos} \n", "\"\"\" \n", "print(hechos)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Nuevos datos muestra\n", "planeta = 'Marte '\n", "gravedad = 0.00143\n", "nombre = 'Ganímedes'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Comprobamos la plantilla\n", "print(hechos)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "new_template = \"\"\"\n", "Datos de Gravedad sobre: {nombre}\n", "-------------------------------------------------------------------------------\n", "Nombre del planeta: {planeta}\n", "Gravedad en {nombre}: {gravedad} m/s2\n", "\"\"\"\n", "print(new_template.format(nombre=nombre, planeta=planeta, gravedad=gravedad))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Pista: print(nueva_plantilla.format(variables))\n", "print(new_template.format(nombre=nombre, planeta=planeta, gravedad=gravedad*1000))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Curso Propedútico de Python para Launch X - Innovacción Virtual.\n", "\n", "Material desarrollado con base en los contenidos de MSLearn y la metáfora de LaunchX, traducción e implementación por: Fernanda Ochoa - Learning Producer de LaunchX.\n", "\n", "Redes:\n", "* GitHub: [FernandaOchoa](https://github.com/FernandaOchoa)\n", "* Twitter: [@imonsh](https://twitter.com/imonsh)\n", "* Instagram: [fherz8a](https://www.instagram.com/fherz8a/)" ] } ], "metadata": { "interpreter": { "hash": "502cd6c3b6c9e666d195e1caff9d64ea12bf644e547a4c8fae84812082c54b6f" }, "kernel_info": { "name": "conda-env-py37_default-py" }, "kernelspec": { "display_name": "py37_default", "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.9.5" }, "nteract": { "version": "nteract-front-end@1.0.0" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }