├── Python_10.png ├── README.md ├── Worshop Python # 1: Primeros pasos Hola Mundo ├── 1_Mi_primer_programa_py_DEL.ipynb ├── 2_Variables_y_Tipo_de_datos_pyDEL.ipynb └── 3_conditional_statements_pyDEL.ipynb ├── Worshop Python # 2: Tipos y Estructura de datos └── Tipos y Estructuras de Python.ipynb ├── Worshop Python # 3: Estructuras de Control └── Estructuras_de_Control.ipynb ├── Worshop Python # 4: Funciones └── Funciones_en_Python.ipynb ├── Worshop Python # 5: Operadores ├── Taller_Operadores_-_Python_1.ipynb └── plantilla_-_Taller_Operadores_-_Python.ipynb ├── Worshop Python # 6: Excepciones └── 7_Excepciones.ipynb ├── Worshop Python # 7: Ficheros ├── Pipfile ├── Pipfile.lock ├── files.ipynb └── iris_df.csv ├── Worshop Python # 8: Numpy ├── Ejercicio_python.ipynb └── README.md └── Worshop Python # 9: Pandas ├── README.md ├── pokemon.zip └── python_pandas_with_pokemon_dataset.ipynb /Python_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DataEngineering-LATAM/Python-StudyClub/05f8903a245506c08eb62fc120e8cffe5129be46/Python_10.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python-StudyClub Data Engineering Latam 🐍 2 | 3 | ![GitHub contributors](https://img.shields.io/github/contributors/DataEngineering-LATAM/Python-StudyClub) 4 | ![GitHub forks](https://img.shields.io/github/forks/DataEngineering-LATAM/Python-StudyClub?style=social) 5 | ![GitHub stars](https://img.shields.io/github/stars/DataEngineering-LATAM/Python-StudyClub?style=social) 6 | ![GitHub watchers](https://img.shields.io/github/watchers/DataEngineering-LATAM/Python-StudyClub?style=social) 7 | 8 | ![](https://github.com/DataEngineering-LATAM/Python-StudyClub/blob/main/Python_10.png#center) 9 | 10 | ¡Bienvenidos al Grupo Python 🐍 de Data Engineering Latam 😊 la comunidad más grande y chévere de todas! 11 | 12 | Grupo de [Telegram](https://t.me/dataengineeringlatam_python) para compartir sus dudas, comentarios y todo lo relacionado a Python 🐍 13 | 14 | ## Avisos 15 | Temporada de Python 🐍 inicia Septiembre 7 todos los Lunes a las 20:00 horas GMT-5 🎯 16 | 17 | Los talleres de Python, están enfocados desde el nivel básico hasta llegar a interactuar con las principales librerías Numpy y Pandas para avanzar en la carrera de Data Science 👨‍💻👩🏼‍💻👨🏿‍💻 18 | 19 | Cada sesión es grabada :video_camera: [Canal de Youtube](https://youtube.com/c/dataengineeringlatam) suscribete, dale like, comenta y comparte. 20 | 21 | ## Temas de cada Worshop: 22 | 23 | Worshop Python # 1: [Primeros pasos Hola Mundo](https://github.com/DataEngineering-LATAM/Python-StudyClub/tree/main/Worshop%20Python%20%23%201:%20Primeros%20pasos%20Hola%20Mundo) 24 | 25 | > [Video de la sesión](https://www.youtube.com/watch?v=vN-gidKPFMo&list=PLdxuOh58KNA4qIMg1EaOF6oALL5SvnA-z) 26 | 27 | Worshop Python # 2: [Tipos y Estructura de datos](https://github.com/DataEngineering-LATAM/Python-StudyClub/blob/main/Worshop%20Python%20%23%202:%20Tipos%20y%20Estructura%20de%20datos/Tipos%20y%20Estructuras%20de%20Python.ipynb) 28 | 29 | > [Video de la sesión](https://www.youtube.com/watch?v=dGv2rOgwNEA&list=PLdxuOh58KNA4qIMg1EaOF6oALL5SvnA-z&index=2) 30 | 31 | Worshop Python # 3: [Estructuras de Control](https://github.com/DataEngineering-LATAM/Python-StudyClub/blob/main/Worshop%20Python%20%23%203:%20Estructuras%20de%20Control/Estructuras_de_Control.ipynb) 32 | 33 | > [Video de la sesión](https://www.youtube.com/watch?v=hT160XTQpG0&list=PLdxuOh58KNA4qIMg1EaOF6oALL5SvnA-z&index=3) 34 | 35 | Worshop Python # 4: [Funciones](https://github.com/DataEngineering-LATAM/Python-StudyClub/blob/main/Worshop%20Python%20%23%204:%20Funciones/Funciones_en_Python.ipynb) 36 | 37 | > [Video de la sesión](https://youtu.be/49RajRnidow) 38 | 39 | Worshop Python # 5: [Operadores](https://github.com/DataEngineering-LATAM/Python-StudyClub/tree/main/Worshop%20Python%20%23%205:%20Operadores) 40 | 41 | > [Video de la sesión](https://youtu.be/4cSi-5mIKqQ) 42 | 43 | Worshop Python # 6: [Excepciones](https://github.com/DataEngineering-LATAM/Python-StudyClub/blob/main/Worshop%20Python%20%23%206:%20Excepciones/7_Excepciones.ipynb) 44 | 45 | > [Video de la sesión](https://youtu.be/egDQgxCkb98) 46 | 47 | Worshop Python # 7: [Ficheros](https://github.com/DataEngineering-LATAM/Python-StudyClub/tree/main/Worshop%20Python%20%23%207:%20Ficheros) 48 | 49 | > [Video de la sesión](https://youtu.be/0-PgB4faPO0) 50 | 51 | Worshop Python # 8: [Numpy para Data Scientists](https://github.com/DataEngineering-LATAM/Python-StudyClub/blob/main/Worshop%20Python%20%23%208:%20Numpy/Ejercicio_python.ipynb) 52 | > [Video de la sesión](https://youtu.be/kgbGWSdzI70?list=PLdxuOh58KNA4qIMg1EaOF6oALL5SvnA-z) 53 | 54 | Worshop Python # 10: [Manipulación de datos con Pandas](https://github.com/DataEngineering-LATAM/Python-StudyClub/blob/main/Worshop%20Python%20%23%209:%20Pandas/python_pandas_with_pokemon_dataset.ipynb) 55 | > [Video de la sesión](https://youtu.be/WE3lS0UlQ9c?list=PLdxuOh58KNA4qIMg1EaOF6oALL5SvnA-z) 56 | 57 | Worshop Python # 11: Test y Documentación 58 | > [Video de la sesión](https://youtu.be/Wzld5dL1uk0?list=PLdxuOh58KNA4qIMg1EaOF6oALL5SvnA-z) 59 | 60 | --- 61 | 62 | ## Sobre la comunidad Data Engineering Latam 63 | 64 | Data Engineering Latam es la comunidad de datos más grande de América Latina cuya misión es promover el talento de la región a través de la difusión de charlas, talleres, grupos de estudio, ayuda colaborativa y la creación de contenido relevante. 65 | 66 |
67 | 68 |
69 | 70 | ## Síguenos en nuestras redes oficiales 71 | 72 | Todas y cada una de nuestras iniciativas y contenidos se mantienen sin apoyo de terceros. Si quieres vernos crecer, nos puedes ayudar con tus reacciones, comentarios y compartidas de nuestros contenidos en redes sociales 🥹 73 | 74 | - [YouTube](https://youtube.com/c/dataengineeringlatam?sub_confirmation=1) 75 | - [Medium](https://medium.com/@dataengineeringlatam) 76 | - [Twitter](https://twitter.com/DataEngiLatam) 77 | - [Instagram](https://instagram.com/dataengineeringlatam) 78 | - [Facebook](https://facebook.com/dataengineeringlatam) 79 | - [TikTok](https://www.tiktok.com/@dataengineeringlatam) 80 | - [Slack](https://bit.ly/dataengineeringlatam_slack) 81 | - [Telegram](https://t.me/dataengineeringlatam) 82 | - [Linkedin](https://linkedin.com/company/data-engineering-latam) 83 | 84 | ## ¿Quieres dar charla en la comunidad? 85 | 86 | :microphone: Cuéntanos [aquí](https://docs.google.com/forms/d/e/1FAIpQLSd7CZgRxGHx-rRA7CyAeB0MxNPgVj5rCqQsrjrFiNYhoZxS1w/viewform) 87 | 88 | ## Disclaimer 89 | 90 | Este no es un curso, los ponentes no son profesores y tú no eres un alumno. Todos estamos aquí reunidos porque nos apasiona este campo. Si algún ponente propone ejercicios a resolver, no estás obligado a presentarlos (ni nosotros a corregirlos =) 91 | 92 | ¡Cualquier feedback que tengas, siempre con respeto, es bienvenido! 93 | 94 | ## ¿Cómo aprovechar mejor esta iniciativa? 95 | 96 | Se recomienda compartir tu resumen a manera de slides, notion, canva, artículo en Medium, post en redes sociales o todo lo antes mencionado utilizando el #dataengineeringlatam y etiquetándonos. 97 | -------------------------------------------------------------------------------- /Worshop Python # 3: Estructuras de Control/Estructuras_de_Control.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [], 7 | "collapsed_sections": [ 8 | "WU-qo5cvTfWz", 9 | "H8R9iJekyNMe", 10 | "tl5xLGO3NFAT", 11 | "niATMkGT_Ds7", 12 | "_MrfjAVaXd2n", 13 | "hw_VSzryjK5Y", 14 | "KMpfyngohk3Z", 15 | "c68ZikHc2sh7", 16 | "1fpDRtYN7-cX", 17 | "2H3UVOd--v-q" 18 | ] 19 | }, 20 | "kernelspec": { 21 | "name": "python3", 22 | "display_name": "Python 3" 23 | }, 24 | "language_info": { 25 | "name": "python" 26 | } 27 | }, 28 | "cells": [ 29 | { 30 | "cell_type": "markdown", 31 | "source": [ 32 | "# **Aprendiendo Python 🐍 con Data Engineering Latam**\n", 33 | "\n", 34 | "> By: [Paula Abad](https://www.linkedin.com/in/paulabadt/)\n", 35 | "\n" 36 | ], 37 | "metadata": { 38 | "id": "HhyEmAixYgWj" 39 | } 40 | }, 41 | { 42 | "cell_type": "markdown", 43 | "source": [ 44 | "# **Estructuras de Control**\n", 45 | "\n", 46 | "Definamos primero que es un Algoritmo: es un conjunto de pasos (tareas / procedimientos / instrucciones) organizados y ejecutados lógica y sintácticamente, que le indican al computador que debe hacer para encontrar la solución de un problema.\n", 47 | "\n", 48 | "\n" 49 | ], 50 | "metadata": { 51 | "id": "WU-qo5cvTfWz" 52 | } 53 | }, 54 | { 55 | "cell_type": "code", 56 | "source": [ 57 | "poner_agua_hervir() \n", 58 | "cortar_pollo() \n", 59 | "freir_pollo() \n", 60 | "vertir_taza_de_arroz() \n", 61 | "mezclar_pollo_arroz() " 62 | ], 63 | "metadata": { 64 | "id": "oMsw8JotfulZ" 65 | }, 66 | "execution_count": null, 67 | "outputs": [] 68 | }, 69 | { 70 | "cell_type": "markdown", 71 | "source": [ 72 | "**¿Qué son las Estructuras de Control?**\n", 73 | "\n", 74 | "Es un bloque de código que permite modificar el flujo de la ejecución de un conjunto de instrucciones. \n", 75 | "\n", 76 | "Tipos de Estructuras de Control:\n", 77 | "\n", 78 | "\n", 79 | "\n", 80 | "* Condicionales\n", 81 | "* Iterativas" 82 | ], 83 | "metadata": { 84 | "id": "WFIw-OVHfwiT" 85 | } 86 | }, 87 | { 88 | "cell_type": "markdown", 89 | "source": [ 90 | "# **Condicionales**\n", 91 | "\n", 92 | "Son aquellas que permiten evaluar si una o más condiciones se cumplen, para decir qué acción ejecutar. La evaluación de condiciones, solo puede arrojar 1 de 2 resultados: verdadero o falso (True o False).\n", 93 | "\n" 94 | ], 95 | "metadata": { 96 | "id": "H8R9iJekyNMe" 97 | } 98 | }, 99 | { 100 | "cell_type": "markdown", 101 | "source": [ 102 | "Las estructuras de control de flujo condicionales, se definen mediante el uso de tres palabras claves reservadas, del lenguaje: **if (si), elif (sino, si) y else (sino).**" 103 | ], 104 | "metadata": { 105 | "id": "HpdiZAwPLhqn" 106 | } 107 | }, 108 | { 109 | "cell_type": "markdown", 110 | "source": [ 111 | "**Sintaxis If-Else**" 112 | ], 113 | "metadata": { 114 | "id": "7t1AJvYAit6r" 115 | } 116 | }, 117 | { 118 | "cell_type": "code", 119 | "source": [ 120 | "if condicion:\n", 121 | " ejecutar sentencia\n", 122 | "else:\n", 123 | " ejecutar sentencia" 124 | ], 125 | "metadata": { 126 | "id": "7Vb55iT2i1Ty" 127 | }, 128 | "execution_count": null, 129 | "outputs": [] 130 | }, 131 | { 132 | "cell_type": "markdown", 133 | "source": [ 134 | "Ejercicio 1:\n", 135 | "\n", 136 | "Leer un numero entero y determinar si es negativo" 137 | ], 138 | "metadata": { 139 | "id": "yedgHmR6KQ5u" 140 | } 141 | }, 142 | { 143 | "cell_type": "code", 144 | "source": [ 145 | "numero = int (input(\"Ingrese un numero: \"))\n", 146 | "\n", 147 | "if numero < 0:\n", 148 | " print(\"El numero ingresado es Negativo\")\n", 149 | "else:\n", 150 | " print(\"El numero ingresado es Positivo\")" 151 | ], 152 | "metadata": { 153 | "id": "s6wDoFuFKboA", 154 | "colab": { 155 | "base_uri": "https://localhost:8080/" 156 | }, 157 | "outputId": "f1ab13d2-6cf5-4b3e-9fa8-7a0fcb43eff6" 158 | }, 159 | "execution_count": 34, 160 | "outputs": [ 161 | { 162 | "output_type": "stream", 163 | "name": "stdout", 164 | "text": [ 165 | "Ingrese un numero: 10\n", 166 | "El numero ingresado es Positivo\n" 167 | ] 168 | } 169 | ] 170 | }, 171 | { 172 | "cell_type": "markdown", 173 | "source": [ 174 | "Ejercicio 2:\n", 175 | "\n", 176 | "Leer un número entero y determinar si tiene 3 digitos" 177 | ], 178 | "metadata": { 179 | "id": "2juCslcaM0HP" 180 | } 181 | }, 182 | { 183 | "cell_type": "code", 184 | "source": [ 185 | "numero = int (input(\"Ingrese un numero:\"))\n", 186 | "\n", 187 | "if numero > 99 and numero < 1000:\n", 188 | " print(\"El numero ingresado tiene 3 digitos\")\n", 189 | "else:\n", 190 | " print(\"El numero ingresado NO tiene 3 digitos\")" 191 | ], 192 | "metadata": { 193 | "id": "ZnWbBcyqNB4g", 194 | "colab": { 195 | "base_uri": "https://localhost:8080/" 196 | }, 197 | "outputId": "9a93fd51-e338-4391-d9fa-7928d03cd9ae" 198 | }, 199 | "execution_count": 36, 200 | "outputs": [ 201 | { 202 | "output_type": "stream", 203 | "name": "stdout", 204 | "text": [ 205 | "Ingrese un numero:45\n", 206 | "El numero ingresado NO tiene 3 digitos\n" 207 | ] 208 | } 209 | ] 210 | }, 211 | { 212 | "cell_type": "markdown", 213 | "source": [ 214 | "Ejercicio 3:\n", 215 | "\n", 216 | "Leer un número entero de dos digitos y determinar a cuanto es igual la suma de sus digitos." 217 | ], 218 | "metadata": { 219 | "id": "pA34hxCbWPG7" 220 | } 221 | }, 222 | { 223 | "cell_type": "code", 224 | "source": [ 225 | "numero = int (input(\"Ingrese un numero de dos digitos: \"))\n", 226 | "\n", 227 | "\n", 228 | "if numero > 9 and numero < 100:\n", 229 | " i = numero % 10\n", 230 | " numero //= 10\n", 231 | " suma = i + numero\n", 232 | " print(\"La suma de sus digitos es:\",suma)\n", 233 | "else:\n", 234 | " print(\"El numero no es de dos digitos\")" 235 | ], 236 | "metadata": { 237 | "id": "ByKaIBB1WTnv", 238 | "colab": { 239 | "base_uri": "https://localhost:8080/" 240 | }, 241 | "outputId": "0ba86071-ddfb-445b-f7fd-e7122af32676" 242 | }, 243 | "execution_count": 2, 244 | "outputs": [ 245 | { 246 | "output_type": "stream", 247 | "name": "stdout", 248 | "text": [ 249 | "Ingrese un numero de dos digitos: 5\n", 250 | "El numero no es de dos digitos\n" 251 | ] 252 | } 253 | ] 254 | }, 255 | { 256 | "cell_type": "markdown", 257 | "source": [ 258 | "# **Condicionales Anidadas**\n", 259 | "\n", 260 | "Los condicionales, permiten escribir código en su interior y en realidad, nada de impide incluso al interior de un condicional, poner otros (u otros). A eso se le llama condiciones anidados, pues una estructura condicional dentro de otra. De hecho, puedes anidar cuantos condicionales requieras, aunque no se recomienda más de dos o tres niveles." 261 | ], 262 | "metadata": { 263 | "id": "tl5xLGO3NFAT" 264 | } 265 | }, 266 | { 267 | "cell_type": "markdown", 268 | "source": [ 269 | "**Sintaxis:**" 270 | ], 271 | "metadata": { 272 | "id": "SSPpfdKcRnPF" 273 | } 274 | }, 275 | { 276 | "cell_type": "code", 277 | "source": [ 278 | "if condición:\n", 279 | " if condición:\n", 280 | " ejecutar sentencia\n", 281 | " if condición:\n", 282 | " ejecutar sentencia\n", 283 | " else:\n", 284 | " ejecutar sentencia\n", 285 | "else:\n", 286 | " ejecutar sentencia" 287 | ], 288 | "metadata": { 289 | "id": "Y8eNUEcURp42" 290 | }, 291 | "execution_count": null, 292 | "outputs": [] 293 | }, 294 | { 295 | "cell_type": "markdown", 296 | "source": [ 297 | "Ejemplo: Definir si el número ingresado es par y si es mayor que 10." 298 | ], 299 | "metadata": { 300 | "id": "XPmMJCGOSGyR" 301 | } 302 | }, 303 | { 304 | "cell_type": "code", 305 | "source": [ 306 | "i = 34\n", 307 | "\n", 308 | "if i % 2 == 0: # así es como creas un comentario y ahora comprueba número par.\n", 309 | " if i > 10:\n", 310 | " print(\"Este número es par y es mayor que 10\")\n", 311 | " else:\n", 312 | " print(\"Este número es par, pero no mayor a 10\")\n", 313 | "else:\n", 314 | " print (\"El número no es par.\")" 315 | ], 316 | "metadata": { 317 | "colab": { 318 | "base_uri": "https://localhost:8080/" 319 | }, 320 | "id": "EqDNUVMASeyE", 321 | "outputId": "822b8a10-21d6-4d57-e52f-32348ca8cd57" 322 | }, 323 | "execution_count": 3, 324 | "outputs": [ 325 | { 326 | "output_type": "stream", 327 | "name": "stdout", 328 | "text": [ 329 | "Este número es par y es mayor que 10\n" 330 | ] 331 | } 332 | ] 333 | }, 334 | { 335 | "cell_type": "markdown", 336 | "source": [ 337 | "# **Sentencia elif**\n", 338 | "\n", 339 | "Se pueden verificar varias condiciones al incluir una o más verificaciones elif después de su declaración if inicial. Teniendo en cuenta que solo se ejecutará una condición." 340 | ], 341 | "metadata": { 342 | "id": "niATMkGT_Ds7" 343 | } 344 | }, 345 | { 346 | "cell_type": "markdown", 347 | "source": [ 348 | "**Sintaxis:**" 349 | ], 350 | "metadata": { 351 | "id": "o7ZigAWeKMAo" 352 | } 353 | }, 354 | { 355 | "cell_type": "code", 356 | "source": [ 357 | "if condición 1:\n", 358 | " ejecutar sentencia\n", 359 | "elif condición 2:\n", 360 | " ejecutar sentencia\n", 361 | "elif condicion 3:\n", 362 | " ejecutar sentencia\n", 363 | "else:\n", 364 | " ejecutar sentencia" 365 | ], 366 | "metadata": { 367 | "id": "EzanZ4EWKP8x" 368 | }, 369 | "execution_count": null, 370 | "outputs": [] 371 | }, 372 | { 373 | "cell_type": "markdown", 374 | "source": [ 375 | "Ejemplo:" 376 | ], 377 | "metadata": { 378 | "id": "PrfrGSGtKsfI" 379 | } 380 | }, 381 | { 382 | "cell_type": "code", 383 | "source": [ 384 | "i = 7\n", 385 | "\n", 386 | "if i > 8:\n", 387 | " print(\"¡No voy a imprimir!\") #esta sentencia no se ejecuta\n", 388 | "elif i > 5:\n", 389 | " print(\"¡Yo lo haré!\") #esta sentencia se ejecuta\n", 390 | "elif i > 6:\n", 391 | " print(\"¡Tampoco voy a imprimir!\") #esta sentencia no se ejecuta\n", 392 | "else:\n", 393 | " print(\"¡Yo tampoco!\") #esta sentencia no se ejecuta" 394 | ], 395 | "metadata": { 396 | "id": "HY0kFfmjCkAI" 397 | }, 398 | "execution_count": null, 399 | "outputs": [] 400 | }, 401 | { 402 | "cell_type": "markdown", 403 | "source": [ 404 | "# **Ejercicios para prácticar**\n", 405 | "\n", 406 | "\n", 407 | "\n", 408 | "> Leer un número entero de dos digitos y determinar si ambos dígitos son pares.\n", 409 | "\n" 410 | ], 411 | "metadata": { 412 | "id": "_MrfjAVaXd2n" 413 | } 414 | }, 415 | { 416 | "cell_type": "markdown", 417 | "source": [ 418 | "> Leer un número entero y determinar si es múltiplo de 7.\n", 419 | "\n" 420 | ], 421 | "metadata": { 422 | "id": "sJ8q7Gy1hiG3" 423 | } 424 | }, 425 | { 426 | "cell_type": "markdown", 427 | "source": [ 428 | "\n", 429 | "\n", 430 | "> Leer un número entero y determinar si es igual a 10.\n", 431 | "\n" 432 | ], 433 | "metadata": { 434 | "id": "j9jhfRu2hv55" 435 | } 436 | }, 437 | { 438 | "cell_type": "markdown", 439 | "source": [ 440 | "> Leer un número entero de 4 digitos y determinar si tiene más dígitos pares o impares.\n", 441 | "\n" 442 | ], 443 | "metadata": { 444 | "id": "_SxckT7-h3I1" 445 | } 446 | }, 447 | { 448 | "cell_type": "markdown", 449 | "source": [ 450 | "# **Iterativas**" 451 | ], 452 | "metadata": { 453 | "id": "hw_VSzryjK5Y" 454 | } 455 | }, 456 | { 457 | "cell_type": "markdown", 458 | "source": [ 459 | "Llamadas cíclicas o bucles, facilitan la repetición de un bloque de instrucciones, un número determinado de veces o mientras se cumpla una condición.\n", 460 | "\n", 461 | "Python incluye únicamente dos tipos de bucle: **while y for**." 462 | ], 463 | "metadata": { 464 | "id": "M-Cebamnjnfs" 465 | } 466 | }, 467 | { 468 | "cell_type": "markdown", 469 | "source": [ 470 | "**Iterables e iteradores**\n", 471 | "\n", 472 | "Los **iterables** son aquellos objetos que como su nombre indica pueden ser iterados, lo que dicho de otra forma es, que puedan ser indexados. Si piensas en un array (o una list en Python), podemos indexarlo con lista[1] por ejemplo, por lo que sería un iterable.\n", 473 | "\n", 474 | "\n", 475 | "\n", 476 | "```\n", 477 | "lista = [1, 2, 3, 4]\n", 478 | "cadena = \"Python\"\n", 479 | "```\n", 480 | "\n", 481 | "\n", 482 | "Los **iteradores** son objetos que hacen referencia a un elemento, y que tienen un método next que permite hacer referencia al siguiente.\n", 483 | "\n" 484 | ], 485 | "metadata": { 486 | "id": "HWKntQDwhgBZ" 487 | } 488 | }, 489 | { 490 | "cell_type": "markdown", 491 | "source": [ 492 | "# **For:**\n", 493 | "\n", 494 | "Establece la variable iteradora en cada valor del iterable (una lista, arreglo, range o cadena proporcionada) y repite el código en el cuerpo del bucle for para cada valor de la variable iteradora." 495 | ], 496 | "metadata": { 497 | "id": "KMpfyngohk3Z" 498 | } 499 | }, 500 | { 501 | "cell_type": "markdown", 502 | "source": [ 503 | "**Sintaxis:**" 504 | ], 505 | "metadata": { 506 | "id": "m02gvEz9kgG2" 507 | } 508 | }, 509 | { 510 | "cell_type": "code", 511 | "source": [ 512 | "for variable in elemento iterable (lista, cadena, range, etc.):\n", 513 | " cuerpo del bucle" 514 | ], 515 | "metadata": { 516 | "id": "lV1hVI1ukje5" 517 | }, 518 | "execution_count": null, 519 | "outputs": [] 520 | }, 521 | { 522 | "cell_type": "markdown", 523 | "source": [ 524 | "Ejercicio 1: Leer un número entero y mostrar todos los enteros comprendidos entre 1 y el numero leido." 525 | ], 526 | "metadata": { 527 | "id": "0Q0voVABksJ2" 528 | } 529 | }, 530 | { 531 | "cell_type": "code", 532 | "source": [ 533 | "j = int(input('Ingrese un numero entero:'))\n", 534 | "\n", 535 | "for i in range(1, j):\n", 536 | " print (i)" 537 | ], 538 | "metadata": { 539 | "id": "Pk6n9G7bmHfS" 540 | }, 541 | "execution_count": null, 542 | "outputs": [] 543 | }, 544 | { 545 | "cell_type": "markdown", 546 | "source": [ 547 | "Ejercicio 2: Leer un entero y mostrar todos los multiplos de 5 comprendidos entre 1 y el numero leido." 548 | ], 549 | "metadata": { 550 | "id": "llz5weo2tnHf" 551 | } 552 | }, 553 | { 554 | "cell_type": "code", 555 | "source": [ 556 | "numero = int (input(\"Ingrese un numero:\"))\n", 557 | "\n", 558 | "for i in range(1,numero):\n", 559 | " if i % 5 == 0:\n", 560 | " print(\"Los multiplos de 5 del numero ingresado son:\",i)" 561 | ], 562 | "metadata": { 563 | "id": "vW315rXltraO" 564 | }, 565 | "execution_count": null, 566 | "outputs": [] 567 | }, 568 | { 569 | "cell_type": "markdown", 570 | "source": [ 571 | "# **For Anidados**\n", 572 | "\n", 573 | "Es un bucle que se encuentra incluido en el bloque de sentencias de otro bloque. Los bucles pueden tener cualquier nivel de anidamiento (un bucle dentro de otro bucle dentro de un tercero, etc.). Al bucle que se encuentra dentro del otro se le puede denominar bucle interior o bucle interno.\n", 574 | "\n", 575 | "En los bucles anidados es importante utilizar variables de control distintas, para no obtener resultados inesperados." 576 | ], 577 | "metadata": { 578 | "id": "c68ZikHc2sh7" 579 | } 580 | }, 581 | { 582 | "cell_type": "markdown", 583 | "source": [ 584 | "Ejemplo: Iterar lista" 585 | ], 586 | "metadata": { 587 | "id": "0o11vFB53i-4" 588 | } 589 | }, 590 | { 591 | "cell_type": "code", 592 | "source": [ 593 | "lista = [[56, 34, 1],\n", 594 | " [12, 4, 5],\n", 595 | " [9, 4, 3]]\n", 596 | "\n", 597 | "for i in lista: # i son las filas\n", 598 | " for j in i: # j son las columnas\n", 599 | " print(j)" 600 | ], 601 | "metadata": { 602 | "id": "2K5tnpGh3k0B" 603 | }, 604 | "execution_count": null, 605 | "outputs": [] 606 | }, 607 | { 608 | "cell_type": "markdown", 609 | "source": [ 610 | "# **Ejercicios para prácticar**\n", 611 | "\n", 612 | "\n", 613 | "\n", 614 | "> Leer un número entero de dos digitos y determinar a cuanto es igual la suma de todos los enteros comprendidos entre 1 y el numero leido\n", 615 | "\n" 616 | ], 617 | "metadata": { 618 | "id": "1fpDRtYN7-cX" 619 | } 620 | }, 621 | { 622 | "cell_type": "markdown", 623 | "source": [ 624 | "\n", 625 | "\n", 626 | "> Generar los números del 1 al 10 utilizando un cilo que vaya de 10 a 1\n", 627 | "\n" 628 | ], 629 | "metadata": { 630 | "id": "SJW1zhV59g34" 631 | } 632 | }, 633 | { 634 | "cell_type": "markdown", 635 | "source": [ 636 | "\n", 637 | "\n", 638 | "> Leer un número entero y mostrar en pantalla su tabla de multiplicar\n", 639 | "\n" 640 | ], 641 | "metadata": { 642 | "id": "21PQ6AXd-BU2" 643 | } 644 | }, 645 | { 646 | "cell_type": "markdown", 647 | "source": [ 648 | "\n", 649 | "> Mostrar en pantalla todos los números terminados en 6 comprendidos entre 25 y 205.\n", 650 | "\n" 651 | ], 652 | "metadata": { 653 | "id": "fEHce9hq-HQI" 654 | } 655 | }, 656 | { 657 | "cell_type": "markdown", 658 | "source": [ 659 | "# **While:**\n", 660 | "\n", 661 | "Permite repetir la ejecución de un grupo de instrucciones mientras se cumpla una condición (es decir, mientras la condición tenga el valor True)." 662 | ], 663 | "metadata": { 664 | "id": "2H3UVOd--v-q" 665 | } 666 | }, 667 | { 668 | "cell_type": "markdown", 669 | "source": [ 670 | "**Sintaxis:**" 671 | ], 672 | "metadata": { 673 | "id": "05E_bIK4_IEi" 674 | } 675 | }, 676 | { 677 | "cell_type": "code", 678 | "source": [ 679 | "while condicion:\n", 680 | " cuerpo del bucle" 681 | ], 682 | "metadata": { 683 | "id": "YfQgR8eN_Kg0" 684 | }, 685 | "execution_count": null, 686 | "outputs": [] 687 | }, 688 | { 689 | "cell_type": "markdown", 690 | "source": [ 691 | "La ejecución de esta estructura de control while es la siguiente:\n", 692 | "\n", 693 | "Python evalúa la condición:\n", 694 | "Si el resultado es True se ejecuta el cuerpo del bucle. Una vez ejecutado el cuerpo del bucle, se repite el proceso (se evalúa de nuevo la condición y, si es cierta, se ejecuta de nuevo el cuerpo del bucle) una y otra vez mientras la condición sea cierta.\n", 695 | "Si el resultado es False, el cuerpo del bucle no se ejecuta y continúa la ejecución del resto del programa.\n", 696 | "\n", 697 | "La variable o las variables que aparezcan en la condición se suelen llamar variables de control. Las variables de control deben definirse antes del bucle while y modificarse en el bucle while." 698 | ], 699 | "metadata": { 700 | "id": "ba-o7cHC_O6n" 701 | } 702 | }, 703 | { 704 | "cell_type": "markdown", 705 | "source": [ 706 | "Ejercicio 1: muestre en pantalla los números del 1 al 10" 707 | ], 708 | "metadata": { 709 | "id": "1NZjKz1eAjAX" 710 | } 711 | }, 712 | { 713 | "cell_type": "code", 714 | "source": [ 715 | "i = 1 # variables de control\n", 716 | "while i <= 10:\n", 717 | " print(i) \n", 718 | " i += 1 \n", 719 | "print(\"Programa terminado\")" 720 | ], 721 | "metadata": { 722 | "id": "lp2WdxMJAtK9" 723 | }, 724 | "execution_count": null, 725 | "outputs": [] 726 | }, 727 | { 728 | "cell_type": "markdown", 729 | "source": [ 730 | "Ejercicio 2: Desarrollar un programa que permita la carga de 3 valores por teclado y nos muestre posteriormente la suma de los valores ingresados y su promedio." 731 | ], 732 | "metadata": { 733 | "id": "vj12-kwIER18" 734 | } 735 | }, 736 | { 737 | "cell_type": "code", 738 | "source": [ 739 | "i = 1\n", 740 | "suma = 0\n", 741 | "while i <= 3:\n", 742 | " valor = int(input(\"Ingrese un valor:\"))\n", 743 | " suma = suma + valor\n", 744 | " i += 1\n", 745 | "promedio = suma / 3\n", 746 | "\n", 747 | "print(\"La suma de los 3 valores es \",suma)\n", 748 | "\n", 749 | "print(\"El promedio es \",promedio)" 750 | ], 751 | "metadata": { 752 | "id": "PgsoN9KeElJM" 753 | }, 754 | "execution_count": null, 755 | "outputs": [] 756 | }, 757 | { 758 | "cell_type": "markdown", 759 | "source": [ 760 | "# **Ejercicios de práctica:**\n", 761 | "\n", 762 | "\n", 763 | "\n", 764 | "> Un programa que muestre en pantalla la tabla del 3.\n", 765 | "\n" 766 | ], 767 | "metadata": { 768 | "id": "RIIYD4j5NUEr" 769 | } 770 | }, 771 | { 772 | "cell_type": "markdown", 773 | "source": [ 774 | "*Muchas gracias*\n", 775 | "\n", 776 | "**[Data Engineering Latam ](https://linkedin.com/company/data-engineering-latam)** la Comunidad más grande y chevere de todas." 777 | ], 778 | "metadata": { 779 | "id": "jukA_xP3Vixl" 780 | } 781 | } 782 | ] 783 | } -------------------------------------------------------------------------------- /Worshop Python # 4: Funciones/Funciones_en_Python.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [], 7 | "collapsed_sections": [] 8 | }, 9 | "kernelspec": { 10 | "name": "python3", 11 | "display_name": "Python 3" 12 | }, 13 | "language_info": { 14 | "name": "python" 15 | } 16 | }, 17 | "cells": [ 18 | { 19 | "cell_type": "markdown", 20 | "source": [ 21 | "# **Aprendiendo Python 🐍 con Data Engineering Latam**\n", 22 | "# **FUNCIONES**\n", 23 | "\n", 24 | "> By: [Neftalí Sacuj](https://www.linkedin.com/in/neftali-sacuj/)\n" 25 | ], 26 | "metadata": { 27 | "id": "HSQvgtNZchYV" 28 | } 29 | }, 30 | { 31 | "cell_type": "code", 32 | "source": [ 33 | "# Resolviendo el RETO DATA Engineering LATAM\n", 34 | "fruits = [\"apple\",\"banana\", \"cherry\"]\n", 35 | "print(fruits[-1])" 36 | ], 37 | "metadata": { 38 | "id": "PZKr6H-ZiLoC", 39 | "colab": { 40 | "base_uri": "https://localhost:8080/" 41 | }, 42 | "outputId": "d0e89d45-58e5-4147-a7ce-b024d4b5c94f" 43 | }, 44 | "execution_count": null, 45 | "outputs": [ 46 | { 47 | "output_type": "stream", 48 | "name": "stdout", 49 | "text": [ 50 | "cherry\n" 51 | ] 52 | } 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "source": [ 58 | "### Cómo creo una función?" 59 | ], 60 | "metadata": { 61 | "id": "p6YEvVcy1W6v" 62 | } 63 | }, 64 | { 65 | "cell_type": "code", 66 | "source": [ 67 | "def mi_funcion(): #nombre de la función\n", 68 | " print(\"Función que dice 'Hola DEL' \") # Algoritmo de la función\n", 69 | "\n", 70 | "mi_funcion()" 71 | ], 72 | "metadata": { 73 | "colab": { 74 | "base_uri": "https://localhost:8080/" 75 | }, 76 | "id": "10M8eKDi7nRO", 77 | "outputId": "bb5b2cf9-aaf0-4efe-9033-1cb5ab129b13" 78 | }, 79 | "execution_count": null, 80 | "outputs": [ 81 | { 82 | "output_type": "stream", 83 | "name": "stdout", 84 | "text": [ 85 | "Función que dice 'Hola DEL' \n" 86 | ] 87 | } 88 | ] 89 | }, 90 | { 91 | "cell_type": "markdown", 92 | "source": [ 93 | "###Cómo le mando parámetros a una función?\n" 94 | ], 95 | "metadata": { 96 | "id": "pR-4l9tL76Ml" 97 | } 98 | }, 99 | { 100 | "cell_type": "code", 101 | "source": [ 102 | "def mi_funcion(param_1, param_2): \n", 103 | " print(param_1)\n", 104 | " print(param_2)\n", 105 | "\n", 106 | "mi_funcion (\"Parametro uno\", \"Parametro dos\")" 107 | ], 108 | "metadata": { 109 | "colab": { 110 | "base_uri": "https://localhost:8080/" 111 | }, 112 | "id": "bf86J6ZC1dSt", 113 | "outputId": "11837baf-edc6-4036-c2d7-712e41902f2e" 114 | }, 115 | "execution_count": null, 116 | "outputs": [ 117 | { 118 | "output_type": "stream", 119 | "name": "stdout", 120 | "text": [ 121 | "Parametro uno\n", 122 | "Parametro dos\n" 123 | ] 124 | } 125 | ] 126 | }, 127 | { 128 | "cell_type": "markdown", 129 | "source": [ 130 | "Definamos nuestra primera función?" 131 | ], 132 | "metadata": { 133 | "id": "M3V6PgV7e-O0" 134 | } 135 | }, 136 | { 137 | "cell_type": "code", 138 | "source": [ 139 | "#Espacio para nuestro Código\n", 140 | "#Una función que determine sí un número ingresado es positivo o negativo\n", 141 | "def positivo_negativo(numero):\n", 142 | " if numero < 0:\n", 143 | " return(\"El numero ingresado es Negativo\")\n", 144 | " else:\n", 145 | " return(\"El numero ingresado es Positivo\")\n", 146 | "\n", 147 | "numero = int (input(\"Ingrese un numero: \"))\n", 148 | "positivo_negativo(numero)\n" 149 | ], 150 | "metadata": { 151 | "colab": { 152 | "base_uri": "https://localhost:8080/", 153 | "height": 52 154 | }, 155 | "id": "kIDypy6dfE_w", 156 | "outputId": "6697d0e2-8b45-48f2-9d88-fd9f2bb2f785" 157 | }, 158 | "execution_count": null, 159 | "outputs": [ 160 | { 161 | "name": "stdout", 162 | "output_type": "stream", 163 | "text": [ 164 | "Ingrese un numero: -8\n" 165 | ] 166 | }, 167 | { 168 | "output_type": "execute_result", 169 | "data": { 170 | "text/plain": [ 171 | "'El numero ingresado es Negativo'" 172 | ], 173 | "application/vnd.google.colaboratory.intrinsic+json": { 174 | "type": "string" 175 | } 176 | }, 177 | "metadata": {}, 178 | "execution_count": 5 179 | } 180 | ] 181 | }, 182 | { 183 | "cell_type": "markdown", 184 | "source": [ 185 | "## ***Ejercicio:*** \n", 186 | "## 1. Una función que determine sí un valor enviado es par o impar?\n", 187 | "\n", 188 | "## 2. Función para determinar si un número es de 2 dígitos o no?" 189 | ], 190 | "metadata": { 191 | "id": "AGOO3cAihh5M" 192 | } 193 | }, 194 | { 195 | "cell_type": "code", 196 | "source": [ 197 | "## Escribamos aquí el código\n", 198 | "def parimpar(valor):\n", 199 | " if valor % 2 == 0:\n", 200 | " print(\"El numero ingresado es par\")\n", 201 | " else:\n", 202 | " print(\"El numero ingresado es impar\")\n", 203 | "\n", 204 | "valor = int (input(\"Ingrese un numero: \"))\n", 205 | "parimpar(valor)" 206 | ], 207 | "metadata": { 208 | "id": "o44_hXODhXaq", 209 | "colab": { 210 | "base_uri": "https://localhost:8080/" 211 | }, 212 | "outputId": "26545716-068a-4126-ecd6-b1e5ed3a7e38" 213 | }, 214 | "execution_count": null, 215 | "outputs": [ 216 | { 217 | "output_type": "stream", 218 | "name": "stdout", 219 | "text": [ 220 | "Ingrese un numero: 15\n", 221 | "El numero ingresado es impar\n" 222 | ] 223 | } 224 | ] 225 | }, 226 | { 227 | "cell_type": "markdown", 228 | "source": [ 229 | "\n", 230 | "\n", 231 | "### Qué ocurre con las Variables en una Función?" 232 | ], 233 | "metadata": { 234 | "id": "UKbyNsh2kogE" 235 | } 236 | }, 237 | { 238 | "cell_type": "code", 239 | "source": [ 240 | "def mi_funcion_con_variable(param_1, param_2):\n", 241 | " variable_local = 'Esta es una variable local'\n", 242 | " Variable_local_2 = 'Esta es otra variable local'\n", 243 | " print(param_1+\" \"+ variable_local)\n", 244 | " print(param_2)\n", 245 | "\n", 246 | "\n", 247 | "mi_funcion_con_variable (\"Param uno\", \"Param 2\")\n", 248 | "\n", 249 | "# print(variable_local)" 250 | ], 251 | "metadata": { 252 | "id": "tjroOIFjX1bB", 253 | "colab": { 254 | "base_uri": "https://localhost:8080/", 255 | "height": 239 256 | }, 257 | "outputId": "e2c60beb-cdac-400f-9bb1-7ac1faaae33f" 258 | }, 259 | "execution_count": null, 260 | "outputs": [ 261 | { 262 | "output_type": "stream", 263 | "name": "stdout", 264 | "text": [ 265 | "Param uno Esta es una variable local\n", 266 | "Param 2\n" 267 | ] 268 | }, 269 | { 270 | "output_type": "error", 271 | "ename": "NameError", 272 | "evalue": "ignored", 273 | "traceback": [ 274 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 275 | "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", 276 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mmi_funcion_con_variable\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"Param uno\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Param 2\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvariable_local\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", 277 | "\u001b[0;31mNameError\u001b[0m: name 'variable_local' is not defined" 278 | ] 279 | } 280 | ] 281 | }, 282 | { 283 | "cell_type": "markdown", 284 | "source": [ 285 | "### Las funciones Retornan un Valor?" 286 | ], 287 | "metadata": { 288 | "id": "eS2l4mjo1uyg" 289 | } 290 | }, 291 | { 292 | "cell_type": "code", 293 | "source": [ 294 | "def sumar(sum1, sum2 ):\n", 295 | " resultado = sum1 + sum2\n", 296 | " return resultado\n", 297 | "\n", 298 | "respuesta = sumar(3,7)\n", 299 | "\n", 300 | "print(respuesta)\n", 301 | "# print(sumar(3, 7))\n", 302 | "\n" 303 | ], 304 | "metadata": { 305 | "colab": { 306 | "base_uri": "https://localhost:8080/" 307 | }, 308 | "id": "xBs62jLI1t7_", 309 | "outputId": "d649f122-1034-4f0b-a3a4-ee0862f0b0c6" 310 | }, 311 | "execution_count": null, 312 | "outputs": [ 313 | { 314 | "output_type": "stream", 315 | "name": "stdout", 316 | "text": [ 317 | "10\n" 318 | ] 319 | } 320 | ] 321 | }, 322 | { 323 | "cell_type": "markdown", 324 | "source": [ 325 | "### Cómo capturamos el valor de retorno de una función?\n" 326 | ], 327 | "metadata": { 328 | "id": "3RIDjgQ65HWG" 329 | } 330 | }, 331 | { 332 | "cell_type": "code", 333 | "source": [ 334 | "def restar(valor1, valor2):\n", 335 | " return valor1 - valor2\n", 336 | "\n", 337 | "resutltado = restar(10,9)\n", 338 | "print(resutltado)\n", 339 | "\n", 340 | "manipular_resultado = resutltado+99\n", 341 | "print(manipular_resultado)" 342 | ], 343 | "metadata": { 344 | "colab": { 345 | "base_uri": "https://localhost:8080/" 346 | }, 347 | "id": "U4FyVa6b5eW4", 348 | "outputId": "61fc39e3-2c0e-4ef9-cfa3-f99236a35f91" 349 | }, 350 | "execution_count": null, 351 | "outputs": [ 352 | { 353 | "output_type": "stream", 354 | "name": "stdout", 355 | "text": [ 356 | "1\n", 357 | "100\n" 358 | ] 359 | } 360 | ] 361 | }, 362 | { 363 | "cell_type": "markdown", 364 | "source": [ 365 | "### Parámetros por Valor vrs Referencia" 366 | ], 367 | "metadata": { 368 | "id": "Fi1m3kuO3aIH" 369 | } 370 | }, 371 | { 372 | "cell_type": "code", 373 | "source": [ 374 | "def f(x, y):\n", 375 | " x = x + 3\n", 376 | " y.append(23)\n", 377 | " print(x, y)\n", 378 | "\n", 379 | "x = 22\n", 380 | "y = [22]\n", 381 | "f(x, y)\n", 382 | "\n", 383 | "# Veamos que ocurre con las variables de origen\n", 384 | "print (x,y)" 385 | ], 386 | "metadata": { 387 | "colab": { 388 | "base_uri": "https://localhost:8080/" 389 | }, 390 | "id": "5qIS2w-LiO5Y", 391 | "outputId": "fd2c52dd-f9f6-48a4-e957-93bdb431740a" 392 | }, 393 | "execution_count": null, 394 | "outputs": [ 395 | { 396 | "output_type": "stream", 397 | "name": "stdout", 398 | "text": [ 399 | "25 [22, 23]\n", 400 | "22 [22, 23]\n" 401 | ] 402 | } 403 | ] 404 | }, 405 | { 406 | "cell_type": "markdown", 407 | "source": [ 408 | "### Puede una función retornar más de un parámetro?\n", 409 | "### Esto es cierto?" 410 | ], 411 | "metadata": { 412 | "id": "1BCdV2YYX2Cp" 413 | } 414 | }, 415 | { 416 | "cell_type": "code", 417 | "source": [ 418 | "# Returning Multiple Values with Tuples\n", 419 | "def multiple_valor_retorno():\n", 420 | " return 1, 2, 3\n", 421 | "\n", 422 | "variable = multiple_valor_retorno()\n", 423 | "\n", 424 | "a, b, c = multiple_valor_retorno()\n", 425 | "print(a)\n", 426 | "print(b)\n", 427 | "print(c)\n", 428 | "\n", 429 | "print(type(variable))" 430 | ], 431 | "metadata": { 432 | "colab": { 433 | "base_uri": "https://localhost:8080/" 434 | }, 435 | "id": "hRhx1bS2X5ok", 436 | "outputId": "ea49d92c-e89f-4f32-a8a1-44af139ba7e7" 437 | }, 438 | "execution_count": null, 439 | "outputs": [ 440 | { 441 | "output_type": "stream", 442 | "name": "stdout", 443 | "text": [ 444 | "1\n", 445 | "2\n", 446 | "3\n", 447 | "\n" 448 | ] 449 | } 450 | ] 451 | }, 452 | { 453 | "cell_type": "markdown", 454 | "source": [ 455 | "### Funcion que retorna más de un parámetro en forma de lista" 456 | ], 457 | "metadata": { 458 | "id": "LRQfrgaOa2Uc" 459 | } 460 | }, 461 | { 462 | "cell_type": "code", 463 | "source": [ 464 | "def return_multiple():\n", 465 | " return [1, 2, 3]\n", 466 | " \n", 467 | "\n", 468 | "return_all = return_multiple()\n", 469 | "print(f'{return_all}')\n", 470 | "\n", 471 | "# Return multiple variables\n", 472 | "a, b, c = return_multiple()\n", 473 | "print(f'{a}')\n", 474 | "#print(f'{b}')\n", 475 | "#print(f'{c}')\n", 476 | "\n", 477 | "print(type(return_all))" 478 | ], 479 | "metadata": { 480 | "colab": { 481 | "base_uri": "https://localhost:8080/" 482 | }, 483 | "id": "QHCDhwEwa7_V", 484 | "outputId": "0eec1cc9-6601-4f1b-c6be-c1d6cd7e7bf2" 485 | }, 486 | "execution_count": null, 487 | "outputs": [ 488 | { 489 | "output_type": "stream", 490 | "name": "stdout", 491 | "text": [ 492 | "[1, 2, 3]\n", 493 | "1\n", 494 | "\n" 495 | ] 496 | } 497 | ] 498 | }, 499 | { 500 | "cell_type": "markdown", 501 | "source": [ 502 | "### Funcion que retorna múltiples valores con Dictionario" 503 | ], 504 | "metadata": { 505 | "id": "SYaW5nphcOqv" 506 | } 507 | }, 508 | { 509 | "cell_type": "code", 510 | "source": [ 511 | "# Returning Multiple Values using a Dictionary\n", 512 | "def calcular_distancia(velocidad, tiempo):\n", 513 | " ditancia_recorrida = velocidad * tiempo\n", 514 | " return {'Velocidad': velocidad, 'Tiempo': tiempo, 'Distancia': ditancia_recorrida}\n", 515 | "items = calcular_distancia(10, 60)\n", 516 | "print(f'La Distancia es = {items.get(\"Distancia\")}')\n", 517 | "print(f'La velocidad es = {items.get(\"Velocidad\")}')\n", 518 | "print(f'El timpo recorrido es ={items.get(\"Tiempo\")}')\n", 519 | "\n", 520 | "resultado = calcular_distancia(10,6)\n", 521 | "\n", 522 | "print(type(resultado))\n" 523 | ], 524 | "metadata": { 525 | "colab": { 526 | "base_uri": "https://localhost:8080/" 527 | }, 528 | "id": "q1vyntW0cSuc", 529 | "outputId": "53effd28-5ff8-465d-dd24-9fb468bc4030" 530 | }, 531 | "execution_count": null, 532 | "outputs": [ 533 | { 534 | "output_type": "stream", 535 | "name": "stdout", 536 | "text": [ 537 | "La Distancia es = 600\n", 538 | "La velocidad es = 10\n", 539 | "El timpo recorrido es =60\n", 540 | "\n" 541 | ] 542 | } 543 | ] 544 | }, 545 | { 546 | "cell_type": "code", 547 | "source": [ 548 | "from datetime import date\n", 549 | "today = date.today()\n", 550 | "print(today.year)\n", 551 | "print(today.month)\n", 552 | "print(today.day)" 553 | ], 554 | "metadata": { 555 | "id": "YXOot21Vkrq5", 556 | "colab": { 557 | "base_uri": "https://localhost:8080/" 558 | }, 559 | "outputId": "564b6ca7-86c8-402b-db32-58ea2b453d5e" 560 | }, 561 | "execution_count": null, 562 | "outputs": [ 563 | { 564 | "output_type": "stream", 565 | "name": "stdout", 566 | "text": [ 567 | "2022\n", 568 | "9\n", 569 | "21\n" 570 | ] 571 | } 572 | ] 573 | }, 574 | { 575 | "cell_type": "markdown", 576 | "source": [ 577 | "### Funcion para Calcular la edad a partir de la **Fecha de Nacimiento**" 578 | ], 579 | "metadata": { 580 | "id": "oVFGkSgvSu53" 581 | } 582 | }, 583 | { 584 | "cell_type": "code", 585 | "source": [ 586 | "# Python3 code to calculate age in years\n", 587 | "\n", 588 | "from datetime import date\n", 589 | "\n", 590 | "def calcularEdad(FechaNacimiento):\n", 591 | " today = date.today()\n", 592 | " edad = today.year - FechaNacimiento.year - ((today.month, today.day) < (FechaNacimiento.month, FechaNacimiento.day))\n", 593 | " return edad\n", 594 | "\t\n", 595 | "# Driver code\n", 596 | "print(calcularEdad(date(2005, 9, 26)), \"Years\")\n" 597 | ], 598 | "metadata": { 599 | "colab": { 600 | "base_uri": "https://localhost:8080/" 601 | }, 602 | "id": "lC95WhkoS4TX", 603 | "outputId": "afaad01f-11fb-44a5-df1b-7ff91453d0dc" 604 | }, 605 | "execution_count": null, 606 | "outputs": [ 607 | { 608 | "output_type": "stream", 609 | "name": "stdout", 610 | "text": [ 611 | "17 Years\n" 612 | ] 613 | } 614 | ] 615 | } 616 | ] 617 | } -------------------------------------------------------------------------------- /Worshop Python # 5: Operadores/Taller_Operadores_-_Python_1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "0a43afe9-fc81-47cc-932d-33fad5f71207", 6 | "metadata": {}, 7 | "source": [ 8 | "Taller Introduccion Python - Operadores" 9 | ] 10 | }, 11 | { 12 | "cell_type": "markdown", 13 | "id": "3e851977-2219-413e-bf6a-3f2b906f7faf", 14 | "metadata": {}, 15 | "source": [ 16 | "Entrada y salida de datos" 17 | ] 18 | }, 19 | { 20 | "cell_type": "code", 21 | "execution_count": 12, 22 | "id": "c481d900-f2fe-4dd2-b332-b810e0b7d45e", 23 | "metadata": {}, 24 | "outputs": [ 25 | { 26 | "name": "stdout", 27 | "output_type": "stream", 28 | "text": [ 29 | "Hola 'Data Engineering Latam' hoy les presentamos el taller Python: Operadores\n", 30 | "Hola 'Data Engineering Latam' hoy les presentamos el taller Python: Operadores\n", 31 | "Hola 'Data Engineering Latam' hoy les presentamos el taller Python: Operadores\n" 32 | ] 33 | } 34 | ], 35 | "source": [ 36 | "comunidad = \"'Data Engineering Latam'\"\n", 37 | "taller = \"Python: Operadores\"\n", 38 | "\n", 39 | "print(\"Hola\", comunidad, \"hoy les presentamos el taller\", taller)\n", 40 | "print(f\"Hola {comunidad} hoy les presentamos el taller {taller}\")\n", 41 | "print(\"Hola {} hoy les presentamos el taller {}\".format(comunidad, taller))" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 17, 47 | "id": "f65a1355-d269-4a2a-bd8e-a564f87abee8", 48 | "metadata": {}, 49 | "outputs": [ 50 | { 51 | "name": "stdin", 52 | "output_type": "stream", 53 | "text": [ 54 | " Tulio\n", 55 | " 30\n" 56 | ] 57 | }, 58 | { 59 | "name": "stdout", 60 | "output_type": "stream", 61 | "text": [ 62 | "130\n" 63 | ] 64 | } 65 | ], 66 | "source": [ 67 | "nombre = input()\n", 68 | "edad = int(input())\n", 69 | "print(edad + 100)" 70 | ] 71 | }, 72 | { 73 | "cell_type": "markdown", 74 | "id": "8cd43c8f-70ee-43b7-b097-c73d41b11115", 75 | "metadata": {}, 76 | "source": [ 77 | "Operadores Aritmeticos" 78 | ] 79 | }, 80 | { 81 | "cell_type": "markdown", 82 | "id": "9b381319-a805-413a-abab-094c337c326e", 83 | "metadata": {}, 84 | "source": [ 85 | "SUma (+)" 86 | ] 87 | }, 88 | { 89 | "cell_type": "code", 90 | "execution_count": 3, 91 | "id": "3b2ade4b-426b-4640-a383-d173059764b9", 92 | "metadata": {}, 93 | "outputs": [ 94 | { 95 | "data": { 96 | "text/plain": [ 97 | "27" 98 | ] 99 | }, 100 | "execution_count": 3, 101 | "metadata": {}, 102 | "output_type": "execute_result" 103 | } 104 | ], 105 | "source": [ 106 | "22 + 5 " 107 | ] 108 | }, 109 | { 110 | "cell_type": "code", 111 | "execution_count": 9, 112 | "id": "6f1335b9-7484-4b80-a2ac-52a378364806", 113 | "metadata": {}, 114 | "outputs": [ 115 | { 116 | "name": "stdout", 117 | "output_type": "stream", 118 | "text": [ 119 | "150\n" 120 | ] 121 | } 122 | ], 123 | "source": [ 124 | "entero_1 = 100 \n", 125 | "entero_2 = 50\n", 126 | "flotante = 5.5\n", 127 | "suma = entero_1 + entero_2\n", 128 | "print (suma) " 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": 13, 134 | "id": "9885824f-0ab1-4334-8045-b124d684db4f", 135 | "metadata": {}, 136 | "outputs": [ 137 | { 138 | "name": "stdout", 139 | "output_type": "stream", 140 | "text": [ 141 | "105.5\n" 142 | ] 143 | } 144 | ], 145 | "source": [ 146 | "suma_2 = entero_1 + flotante \n", 147 | "print(suma_2)" 148 | ] 149 | }, 150 | { 151 | "cell_type": "code", 152 | "execution_count": 14, 153 | "id": "560914b0-779f-4988-b1b4-6ef756aa77aa", 154 | "metadata": {}, 155 | "outputs": [ 156 | { 157 | "name": "stdout", 158 | "output_type": "stream", 159 | "text": [ 160 | " La suma de 100 + 50 es 150\n" 161 | ] 162 | } 163 | ], 164 | "source": [ 165 | "print(f' La suma de {entero_1} + {entero_2} es {suma}')" 166 | ] 167 | }, 168 | { 169 | "cell_type": "code", 170 | "execution_count": 15, 171 | "id": "cdbe1f38-658b-43ae-a78b-818ddf7c94f7", 172 | "metadata": {}, 173 | "outputs": [ 174 | { 175 | "name": "stdout", 176 | "output_type": "stream", 177 | "text": [ 178 | "La suma de 100 + 5.5 es 105.5\n" 179 | ] 180 | } 181 | ], 182 | "source": [ 183 | "print(f'La suma de {entero_1} + {flotante} es {suma_2}')" 184 | ] 185 | }, 186 | { 187 | "cell_type": "markdown", 188 | "id": "10258f68-965b-41c7-9097-617b94490254", 189 | "metadata": {}, 190 | "source": [ 191 | "Resta (-)" 192 | ] 193 | }, 194 | { 195 | "cell_type": "code", 196 | "execution_count": 17, 197 | "id": "3e4cf033-d14a-4b27-84c6-c826af4162c0", 198 | "metadata": {}, 199 | "outputs": [ 200 | { 201 | "name": "stdout", 202 | "output_type": "stream", 203 | "text": [ 204 | "50\n" 205 | ] 206 | } 207 | ], 208 | "source": [ 209 | "resta = entero_1 - entero_2 \n", 210 | "print(resta)" 211 | ] 212 | }, 213 | { 214 | "cell_type": "markdown", 215 | "id": "3ef0c0d5-0523-4608-ac83-81ec87d5fae2", 216 | "metadata": {}, 217 | "source": [ 218 | "Multiplicacion (*)" 219 | ] 220 | }, 221 | { 222 | "cell_type": "code", 223 | "execution_count": 18, 224 | "id": "59b045a0-fdb3-4e0a-bea1-12df97850041", 225 | "metadata": {}, 226 | "outputs": [ 227 | { 228 | "name": "stdout", 229 | "output_type": "stream", 230 | "text": [ 231 | "550.0\n" 232 | ] 233 | } 234 | ], 235 | "source": [ 236 | "multiplicacion = entero_1 * flotante\n", 237 | "print (multiplicacion)" 238 | ] 239 | }, 240 | { 241 | "cell_type": "markdown", 242 | "id": "8728d013-baf5-4091-b672-a0a28c052044", 243 | "metadata": {}, 244 | "source": [ 245 | "Division (/)" 246 | ] 247 | }, 248 | { 249 | "cell_type": "code", 250 | "execution_count": 21, 251 | "id": "42e21f4e-95b5-41d3-be5e-cb26fc61d394", 252 | "metadata": {}, 253 | "outputs": [ 254 | { 255 | "name": "stdout", 256 | "output_type": "stream", 257 | "text": [ 258 | "2.0\n" 259 | ] 260 | } 261 | ], 262 | "source": [ 263 | "Division = entero_1 / entero_2\n", 264 | "print(Division)" 265 | ] 266 | }, 267 | { 268 | "cell_type": "markdown", 269 | "id": "ab3ee2b7-0335-4af9-8496-26ab747fbf68", 270 | "metadata": {}, 271 | "source": [ 272 | "Divion entera a la baja (//)" 273 | ] 274 | }, 275 | { 276 | "cell_type": "code", 277 | "execution_count": 162, 278 | "id": "24a262e1-b256-45a2-86ae-35e59fda0682", 279 | "metadata": {}, 280 | "outputs": [ 281 | { 282 | "name": "stdout", 283 | "output_type": "stream", 284 | "text": [ 285 | "4\n" 286 | ] 287 | } 288 | ], 289 | "source": [ 290 | "print(9//2)" 291 | ] 292 | }, 293 | { 294 | "cell_type": "markdown", 295 | "id": "0676e59b-9794-4b76-b34c-e96096b3de51", 296 | "metadata": {}, 297 | "source": [ 298 | "Residuo (%)" 299 | ] 300 | }, 301 | { 302 | "cell_type": "code", 303 | "execution_count": 22, 304 | "id": "285d98af-8237-42fd-9cc0-c35e018627ae", 305 | "metadata": {}, 306 | "outputs": [ 307 | { 308 | "name": "stdout", 309 | "output_type": "stream", 310 | "text": [ 311 | "0\n", 312 | "2\n" 313 | ] 314 | } 315 | ], 316 | "source": [ 317 | "print ( 30 % 6)\n", 318 | "print (20 % 3 )" 319 | ] 320 | }, 321 | { 322 | "cell_type": "markdown", 323 | "id": "b12589ce-9fac-46d5-a493-82f1d78f3d69", 324 | "metadata": {}, 325 | "source": [ 326 | "Exponente (**)" 327 | ] 328 | }, 329 | { 330 | "cell_type": "code", 331 | "execution_count": 24, 332 | "id": "10501e1b-cefb-43f7-ad00-cbded8540d1b", 333 | "metadata": {}, 334 | "outputs": [ 335 | { 336 | "name": "stdout", 337 | "output_type": "stream", 338 | "text": [ 339 | "8\n", 340 | "27\n" 341 | ] 342 | } 343 | ], 344 | "source": [ 345 | "print ( 2 ** 3 )\n", 346 | "print (3 ** 3)" 347 | ] 348 | }, 349 | { 350 | "cell_type": "markdown", 351 | "id": "2db40d10-5a5b-47e6-bc83-f54890c77f34", 352 | "metadata": {}, 353 | "source": [ 354 | "Parentesis ()" 355 | ] 356 | }, 357 | { 358 | "cell_type": "markdown", 359 | "id": "7f7e65cc-0c86-4e57-b567-0450d7c9202b", 360 | "metadata": {}, 361 | "source": [ 362 | "Orden/Prioridad de Operadores aritmeticos - PEMDAS\n", 363 | "- Parentesis, exponentes, multiplicacion-division, adicion-resta" 364 | ] 365 | }, 366 | { 367 | "cell_type": "code", 368 | "execution_count": 26, 369 | "id": "b04ed73b-93cb-4a1a-9ea6-0219f190ab46", 370 | "metadata": {}, 371 | "outputs": [ 372 | { 373 | "name": "stdout", 374 | "output_type": "stream", 375 | "text": [ 376 | "106.0\n", 377 | "150.0\n" 378 | ] 379 | } 380 | ], 381 | "source": [ 382 | "Operacion1 = 100 + 50 / 5 - 4\n", 383 | "Operacion2 = (100 + 50 / (5 - 4))\n", 384 | "print (Operacion1) \n", 385 | "print (Operacion2)" 386 | ] 387 | }, 388 | { 389 | "cell_type": "markdown", 390 | "id": "f37f9e0c-31d9-4ca1-ac5b-838c58c4dd6d", 391 | "metadata": {}, 392 | "source": [ 393 | "Explicacion: Operacion1\n", 394 | "100 + 10 - 4\n", 395 | "106\n", 396 | "Operacion2\n", 397 | "100 + 50 / 1\n", 398 | "100 + 50\n", 399 | "150" 400 | ] 401 | }, 402 | { 403 | "cell_type": "markdown", 404 | "id": "bff1c9b8-bb43-4738-9df2-4a1e53d05266", 405 | "metadata": {}, 406 | "source": [ 407 | "Operadores de Asignacion: Asignar valores a una variable" 408 | ] 409 | }, 410 | { 411 | "cell_type": "code", 412 | "execution_count": 151, 413 | "id": "6a726a7d-aa66-4a5e-87c3-a12ef0aaed67", 414 | "metadata": {}, 415 | "outputs": [ 416 | { 417 | "name": "stdout", 418 | "output_type": "stream", 419 | "text": [ 420 | "10\n", 421 | "numero\n", 422 | "numero_2\n", 423 | "\n" 424 | ] 425 | } 426 | ], 427 | "source": [ 428 | "numero = 10\n", 429 | "print(numero)\n", 430 | "print(\"numero\")\n", 431 | "print('numero_2')\n", 432 | "print(type(numero))" 433 | ] 434 | }, 435 | { 436 | "cell_type": "markdown", 437 | "id": "8c807f24-6746-4fce-afed-d1492a96300c", 438 | "metadata": {}, 439 | "source": [ 440 | "Asignacion ( = )" 441 | ] 442 | }, 443 | { 444 | "cell_type": "code", 445 | "execution_count": 10, 446 | "id": "0b0c02d5-cb93-4363-a64f-801318372383", 447 | "metadata": {}, 448 | "outputs": [], 449 | "source": [ 450 | "comunidad = \"Data Engineering Latam\"\n", 451 | "comunidad_abr = 'DEL'\n", 452 | "numero = 100 " 453 | ] 454 | }, 455 | { 456 | "cell_type": "code", 457 | "execution_count": 61, 458 | "id": "245b11a5-f449-4299-9c7c-bcc1b3300836", 459 | "metadata": {}, 460 | "outputs": [ 461 | { 462 | "name": "stdout", 463 | "output_type": "stream", 464 | "text": [ 465 | "Data Engineering Latam\n", 466 | "DEL\n", 467 | "100\n" 468 | ] 469 | } 470 | ], 471 | "source": [ 472 | "print (comunidad)\n", 473 | "print (comunidad_abr)\n", 474 | "print (numero)" 475 | ] 476 | }, 477 | { 478 | "cell_type": "code", 479 | "execution_count": 55, 480 | "id": "804d5da4-ac96-4f0b-b5d7-ce13faf5ca47", 481 | "metadata": {}, 482 | "outputs": [ 483 | { 484 | "name": "stdout", 485 | "output_type": "stream", 486 | "text": [ 487 | "150\n" 488 | ] 489 | } 490 | ], 491 | "source": [ 492 | "suma = numero + 50\n", 493 | "print(suma) " 494 | ] 495 | }, 496 | { 497 | "cell_type": "markdown", 498 | "id": "91c52565-c96e-4abb-8200-704428637714", 499 | "metadata": {}, 500 | "source": [ 501 | "Suma en Asignacion (+=)" 502 | ] 503 | }, 504 | { 505 | "cell_type": "code", 506 | "execution_count": 11, 507 | "id": "bd88e253-a05e-4270-8456-cde9d03e5704", 508 | "metadata": {}, 509 | "outputs": [ 510 | { 511 | "name": "stdout", 512 | "output_type": "stream", 513 | "text": [ 514 | "150\n" 515 | ] 516 | } 517 | ], 518 | "source": [ 519 | "#numero = numero + 50\n", 520 | "numero += 50\n", 521 | "print(numero)" 522 | ] 523 | }, 524 | { 525 | "cell_type": "markdown", 526 | "id": "b28f1201-212d-47a0-b29a-4a8618cab4d6", 527 | "metadata": {}, 528 | "source": [ 529 | "Resta en Asignacion (-=)" 530 | ] 531 | }, 532 | { 533 | "cell_type": "code", 534 | "execution_count": 86, 535 | "id": "32f0fac2-f263-47e4-b08a-fa274b9ee9fd", 536 | "metadata": {}, 537 | "outputs": [ 538 | { 539 | "name": "stdout", 540 | "output_type": "stream", 541 | "text": [ 542 | "70\n" 543 | ] 544 | } 545 | ], 546 | "source": [ 547 | "numero_2 = 100\n", 548 | "numero_2 -=30\n", 549 | "print(numero_2)" 550 | ] 551 | }, 552 | { 553 | "cell_type": "markdown", 554 | "id": "fd396f26-98b2-4ce4-bf6f-be3cd57bf8e2", 555 | "metadata": {}, 556 | "source": [ 557 | "Multiplicacion en Asignacion (*=)" 558 | ] 559 | }, 560 | { 561 | "cell_type": "code", 562 | "execution_count": 88, 563 | "id": "3c1bb4a6-47f0-4f9f-b24c-0738d1855323", 564 | "metadata": {}, 565 | "outputs": [ 566 | { 567 | "name": "stdout", 568 | "output_type": "stream", 569 | "text": [ 570 | "500\n" 571 | ] 572 | } 573 | ], 574 | "source": [ 575 | "numero_3 = 100 \n", 576 | "numero_3 *= 5\n", 577 | "print(numero_3)" 578 | ] 579 | }, 580 | { 581 | "cell_type": "markdown", 582 | "id": "3677a129-bded-4329-aa5e-ecfdd8a3c20e", 583 | "metadata": {}, 584 | "source": [ 585 | "Division en Asignacion (/=)" 586 | ] 587 | }, 588 | { 589 | "cell_type": "code", 590 | "execution_count": 89, 591 | "id": "cafa692f-30b9-457a-a500-fe2799d9c09d", 592 | "metadata": {}, 593 | "outputs": [ 594 | { 595 | "name": "stdout", 596 | "output_type": "stream", 597 | "text": [ 598 | "25.0\n" 599 | ] 600 | } 601 | ], 602 | "source": [ 603 | "numero_4 = 100 \n", 604 | "numero_4 /= 4\n", 605 | "print(numero_4)" 606 | ] 607 | }, 608 | { 609 | "cell_type": "markdown", 610 | "id": "f1eb5abd-8600-4cd9-8a19-e3f5a0e5ad6e", 611 | "metadata": {}, 612 | "source": [ 613 | "Operadores de comparacion" 614 | ] 615 | }, 616 | { 617 | "cell_type": "code", 618 | "execution_count": 91, 619 | "id": "43cadb43-019c-459c-8ee4-58fd3b083c4b", 620 | "metadata": {}, 621 | "outputs": [], 622 | "source": [ 623 | "numero_1 = 100\n", 624 | "numero_2 = 20\n", 625 | "numero_3 = 5" 626 | ] 627 | }, 628 | { 629 | "cell_type": "markdown", 630 | "id": "60da74c8-d7b6-4110-bb3b-49dab05b2117", 631 | "metadata": {}, 632 | "source": [ 633 | "Mayor que (>)" 634 | ] 635 | }, 636 | { 637 | "cell_type": "code", 638 | "execution_count": 93, 639 | "id": "d0c18ffb-324f-41cb-beb5-78fa33d4099d", 640 | "metadata": {}, 641 | "outputs": [ 642 | { 643 | "name": "stdout", 644 | "output_type": "stream", 645 | "text": [ 646 | "True\n", 647 | "False\n" 648 | ] 649 | } 650 | ], 651 | "source": [ 652 | "print(numero_1 > numero_2 ) # 100 > 50\n", 653 | "print(numero_1 < numero_2 ) # 100 < 50 " 654 | ] 655 | }, 656 | { 657 | "cell_type": "markdown", 658 | "id": "db9ea456-a8de-44e3-ac61-78579584e686", 659 | "metadata": {}, 660 | "source": [ 661 | "Mayor o igual que (>=)" 662 | ] 663 | }, 664 | { 665 | "cell_type": "code", 666 | "execution_count": 106, 667 | "id": "ecad0461-ccd3-42d4-97c5-9ede35c436f6", 668 | "metadata": {}, 669 | "outputs": [ 670 | { 671 | "name": "stdout", 672 | "output_type": "stream", 673 | "text": [ 674 | "True\n", 675 | "False\n", 676 | "True\n" 677 | ] 678 | } 679 | ], 680 | "source": [ 681 | "print(numero_1 >= numero_2) # 100 >= 50\n", 682 | "print(numero_1 <= numero_2) # 100 <= 50 \n", 683 | "print(numero_1 >= (numero_2 +50)) # 100 >= 50 + 50" 684 | ] 685 | }, 686 | { 687 | "cell_type": "markdown", 688 | "id": "a5e15736-08d8-4982-ab40-e9e5ee69c24b", 689 | "metadata": {}, 690 | "source": [ 691 | "Igualdad es (==)" 692 | ] 693 | }, 694 | { 695 | "cell_type": "markdown", 696 | "id": "1cb1a50f-7cd3-409f-99f9-577272289d82", 697 | "metadata": {}, 698 | "source": [ 699 | "Asignacion (=)" 700 | ] 701 | }, 702 | { 703 | "cell_type": "markdown", 704 | "id": "be224b89-eb83-4de6-ad45-01ad8773f23c", 705 | "metadata": {}, 706 | "source": [ 707 | "Diferente (!=)" 708 | ] 709 | }, 710 | { 711 | "cell_type": "code", 712 | "execution_count": 103, 713 | "id": "957514ec-73e5-4f11-85f8-51c5737f5ff7", 714 | "metadata": {}, 715 | "outputs": [ 716 | { 717 | "name": "stdout", 718 | "output_type": "stream", 719 | "text": [ 720 | "False\n", 721 | "True\n" 722 | ] 723 | } 724 | ], 725 | "source": [ 726 | "print(numero_1 == numero_2 ) # 100 = 20\n", 727 | "print(numero_1 == (numero_2 + 80 ) ) # 100 = 20 + 80 " 728 | ] 729 | }, 730 | { 731 | "cell_type": "code", 732 | "execution_count": 104, 733 | "id": "9b43844c-dc46-4f60-9df1-86dc43fd2fe6", 734 | "metadata": {}, 735 | "outputs": [], 736 | "source": [ 737 | "operacion_c1 = numero_1 == 100" 738 | ] 739 | }, 740 | { 741 | "cell_type": "code", 742 | "execution_count": 105, 743 | "id": "3b28d449-9a95-4b5f-985c-1a079a7f1066", 744 | "metadata": {}, 745 | "outputs": [ 746 | { 747 | "name": "stdout", 748 | "output_type": "stream", 749 | "text": [ 750 | "True\n" 751 | ] 752 | } 753 | ], 754 | "source": [ 755 | "print (operacion_c1)" 756 | ] 757 | }, 758 | { 759 | "cell_type": "markdown", 760 | "id": "feead856-059f-4606-bbf0-f04016806ef7", 761 | "metadata": {}, 762 | "source": [ 763 | "Ejercicio: Hallar divisores de 100" 764 | ] 765 | }, 766 | { 767 | "cell_type": "markdown", 768 | "id": "040bd028-9725-4bf0-b403-669ab9db7988", 769 | "metadata": {}, 770 | "source": [ 771 | "N = 100,\n", 772 | "n = aleatorio entero" 773 | ] 774 | }, 775 | { 776 | "cell_type": "markdown", 777 | "id": "db9f924c-c506-4e1d-be29-e38c5d81ddf6", 778 | "metadata": {}, 779 | "source": [ 780 | "Seran divisores de N, si al dividir N por n el residuo es cero. " 781 | ] 782 | }, 783 | { 784 | "cell_type": "code", 785 | "execution_count": 157, 786 | "id": "b8245000-8280-42b6-9433-b09827c9b4b7", 787 | "metadata": {}, 788 | "outputs": [ 789 | { 790 | "name": "stdout", 791 | "output_type": "stream", 792 | "text": [ 793 | "False\n", 794 | "El n es: 73\n", 795 | "El n es: 73\n" 796 | ] 797 | } 798 | ], 799 | "source": [ 800 | "import random\n", 801 | "N = 100\n", 802 | "n = random.randint(1,100)\n", 803 | "operacion_DEL = N % n \n", 804 | "resultado = ( operacion_DEL == 0 )\n", 805 | "print(resultado)\n", 806 | "print(f\"El n es: {n}\")\n", 807 | "print(\"El n es:\", n)" 808 | ] 809 | }, 810 | { 811 | "cell_type": "markdown", 812 | "id": "1956ca4d-ee53-4bfa-abd4-ce3808efb5a3", 813 | "metadata": {}, 814 | "source": [ 815 | "Tipado Dinamico " 816 | ] 817 | }, 818 | { 819 | "cell_type": "code", 820 | "execution_count": 158, 821 | "id": "152fc93f-34b8-4674-80fe-14e6f9690c5a", 822 | "metadata": {}, 823 | "outputs": [ 824 | { 825 | "name": "stdout", 826 | "output_type": "stream", 827 | "text": [ 828 | "500\n" 829 | ] 830 | } 831 | ], 832 | "source": [ 833 | "valor_dinamico = 500 \n", 834 | "print( valor_dinamico )" 835 | ] 836 | }, 837 | { 838 | "cell_type": "code", 839 | "execution_count": 159, 840 | "id": "2667fcbb-fd98-431e-8e83-b36e205d714e", 841 | "metadata": {}, 842 | "outputs": [ 843 | { 844 | "name": "stdout", 845 | "output_type": "stream", 846 | "text": [ 847 | "Python cambia el tipo de dato por el tipado dinamico\n" 848 | ] 849 | } 850 | ], 851 | "source": [ 852 | "valor_dinamico = \"Python cambia el tipo de dato por el tipado dinamico\"\n", 853 | "print( valor_dinamico )" 854 | ] 855 | }, 856 | { 857 | "cell_type": "markdown", 858 | "id": "97a9fea9-dd2e-42a5-b317-ef74440d6d89", 859 | "metadata": {}, 860 | "source": [ 861 | "Operadores Logicos" 862 | ] 863 | }, 864 | { 865 | "cell_type": "markdown", 866 | "id": "1bb086cc-d020-4e84-b10b-8298344901f3", 867 | "metadata": {}, 868 | "source": [ 869 | "Ejercicio\n", 870 | "\n", 871 | "a = 2, b = 3, c = 4, d = 5" 872 | ] 873 | }, 874 | { 875 | "cell_type": "markdown", 876 | "id": "57502fc3-6513-45a9-8952-133f0b7dfe4e", 877 | "metadata": {}, 878 | "source": [ 879 | "((a*c) > (b + d)) or ((d – a ) > (c – b )) and (a ==b) or (c (b + d)) or ((d - a ) > (c - b )) and (a == b) or not(c)" 367 | ] 368 | }, 369 | { 370 | "cell_type": "code", 371 | "execution_count": null, 372 | "id": "d0c18ffb-324f-41cb-beb5-78fa33d4099d", 373 | "metadata": {}, 374 | "outputs": [], 375 | "source": [] 376 | }, 377 | { 378 | "cell_type": "markdown", 379 | "id": "db9ea456-a8de-44e3-ac61-78579584e686", 380 | "metadata": {}, 381 | "source": [ 382 | "Mayor o igual que (>=)" 383 | ] 384 | }, 385 | { 386 | "cell_type": "code", 387 | "execution_count": null, 388 | "id": "ecad0461-ccd3-42d4-97c5-9ede35c436f6", 389 | "metadata": {}, 390 | "outputs": [], 391 | "source": [] 392 | }, 393 | { 394 | "cell_type": "markdown", 395 | "id": "a5e15736-08d8-4982-ab40-e9e5ee69c24b", 396 | "metadata": {}, 397 | "source": [ 398 | "Igualdad es (==)" 399 | ] 400 | }, 401 | { 402 | "cell_type": "markdown", 403 | "id": "1cb1a50f-7cd3-409f-99f9-577272289d82", 404 | "metadata": {}, 405 | "source": [ 406 | "Asignacion (=)" 407 | ] 408 | }, 409 | { 410 | "cell_type": "markdown", 411 | "id": "be224b89-eb83-4de6-ad45-01ad8773f23c", 412 | "metadata": {}, 413 | "source": [ 414 | "Diferente (!=)" 415 | ] 416 | }, 417 | { 418 | "cell_type": "code", 419 | "execution_count": null, 420 | "id": "957514ec-73e5-4f11-85f8-51c5737f5ff7", 421 | "metadata": {}, 422 | "outputs": [], 423 | "source": [] 424 | }, 425 | { 426 | "cell_type": "code", 427 | "execution_count": null, 428 | "id": "9b43844c-dc46-4f60-9df1-86dc43fd2fe6", 429 | "metadata": {}, 430 | "outputs": [], 431 | "source": [] 432 | }, 433 | { 434 | "cell_type": "code", 435 | "execution_count": null, 436 | "id": "3b28d449-9a95-4b5f-985c-1a079a7f1066", 437 | "metadata": {}, 438 | "outputs": [], 439 | "source": [] 440 | }, 441 | { 442 | "cell_type": "markdown", 443 | "id": "feead856-059f-4606-bbf0-f04016806ef7", 444 | "metadata": {}, 445 | "source": [ 446 | "Ejercicio: Hallar divisores de 100" 447 | ] 448 | }, 449 | { 450 | "cell_type": "markdown", 451 | "id": "040bd028-9725-4bf0-b403-669ab9db7988", 452 | "metadata": {}, 453 | "source": [ 454 | "N = 100,\n", 455 | "n = aleatorio entero" 456 | ] 457 | }, 458 | { 459 | "cell_type": "markdown", 460 | "id": "db9f924c-c506-4e1d-be29-e38c5d81ddf6", 461 | "metadata": {}, 462 | "source": [ 463 | "Seran divisores de N, si al dividir N por n el residuo es cero. " 464 | ] 465 | }, 466 | { 467 | "cell_type": "code", 468 | "execution_count": null, 469 | "id": "b8245000-8280-42b6-9433-b09827c9b4b7", 470 | "metadata": {}, 471 | "outputs": [], 472 | "source": [] 473 | }, 474 | { 475 | "cell_type": "markdown", 476 | "id": "1956ca4d-ee53-4bfa-abd4-ce3808efb5a3", 477 | "metadata": {}, 478 | "source": [ 479 | "Tipado Dinamico " 480 | ] 481 | }, 482 | { 483 | "cell_type": "code", 484 | "execution_count": null, 485 | "id": "152fc93f-34b8-4674-80fe-14e6f9690c5a", 486 | "metadata": {}, 487 | "outputs": [], 488 | "source": [] 489 | }, 490 | { 491 | "cell_type": "code", 492 | "execution_count": null, 493 | "id": "2667fcbb-fd98-431e-8e83-b36e205d714e", 494 | "metadata": {}, 495 | "outputs": [], 496 | "source": [] 497 | }, 498 | { 499 | "cell_type": "markdown", 500 | "id": "97a9fea9-dd2e-42a5-b317-ef74440d6d89", 501 | "metadata": {}, 502 | "source": [ 503 | "Operadores Logicos" 504 | ] 505 | }, 506 | { 507 | "cell_type": "markdown", 508 | "id": "1bb086cc-d020-4e84-b10b-8298344901f3", 509 | "metadata": {}, 510 | "source": [ 511 | "Ejercicio\n", 512 | "\n", 513 | "a = 2, b = 3, c = 4, d = 5" 514 | ] 515 | }, 516 | { 517 | "cell_type": "markdown", 518 | "id": "57502fc3-6513-45a9-8952-133f0b7dfe4e", 519 | "metadata": {}, 520 | "source": [ 521 | "((a*c) > (b + d)) or ((d – a ) > (c – b )) and (a ==b) or (c By: [Erick Huanca](https://www.linkedin.com/in/erick-huanca/)" 24 | ], 25 | "metadata": { 26 | "id": "IromZbIgb6I2" 27 | } 28 | }, 29 | { 30 | "cell_type": "markdown", 31 | "source": [ 32 | "# **Excepciones**\n", 33 | "\n", 34 | "**¿Qué son las excepciones?** \n", 35 | "\n", 36 | "Las excepciones son errores detectados por Python durante la ejecución del programa.\n", 37 | "\n" 38 | ], 39 | "metadata": { 40 | "id": "Iyjkc6pyd5dy" 41 | } 42 | }, 43 | { 44 | "cell_type": "markdown", 45 | "source": [ 46 | "### **Ejemplo 1: Imprimir division entre 0 (Cero).**" 47 | ], 48 | "metadata": { 49 | "id": "4835iPjrq58_" 50 | } 51 | }, 52 | { 53 | "cell_type": "code", 54 | "source": [ 55 | "def division(a, b):\n", 56 | " try:\n", 57 | " return a/b\n", 58 | " except ZeroDivisionError:\n", 59 | " return \"Error de division entre cero\"\n", 60 | "\n", 61 | "while True:\n", 62 | " try:\n", 63 | " val1 = (int(input(\"Introduce 1er valor: \")))\n", 64 | " val2 = (int(input(\"Introduce 2do valor: \")))\n", 65 | " break\n", 66 | " \n", 67 | " except ValueError:\n", 68 | " print(\"Los Valores no son correctos!, vuelva a intentar.\")\n", 69 | "\n", 70 | "print(\"-------------------------------\")\n", 71 | "\n", 72 | "print(\"Resultado division: \", division(val1, val2))\n", 73 | "\n", 74 | "print(\"-------------------------------\")\n", 75 | "\n", 76 | "print (\"Operacion finalizada!\")" 77 | ], 78 | "metadata": { 79 | "colab": { 80 | "base_uri": "https://localhost:8080/" 81 | }, 82 | "id": "ruPR-tKqrztf", 83 | "outputId": "fc3a80d0-ee36-443c-8b07-b2036130e0e0" 84 | }, 85 | "execution_count": 26, 86 | "outputs": [ 87 | { 88 | "output_type": "stream", 89 | "name": "stdout", 90 | "text": [ 91 | "Introduce 1er valor: 4\n", 92 | "Introduce 2do valor: 4\n", 93 | "-------------------------------\n", 94 | "Resultado division: 1.0\n", 95 | "-------------------------------\n", 96 | "Operacion finalizada!\n" 97 | ] 98 | } 99 | ] 100 | }, 101 | { 102 | "cell_type": "markdown", 103 | "source": [ 104 | "### **Reto 1: Imprimir las operaciones matemáticas de multiplicación, división y módulo.**" 105 | ], 106 | "metadata": { 107 | "id": "5I0TqQahr99V" 108 | } 109 | }, 110 | { 111 | "cell_type": "code", 112 | "source": [ 113 | "def multiplicacion(a, b):\n", 114 | " return a*b\n", 115 | " \n", 116 | "def division(a, b):\n", 117 | " try:\n", 118 | " return a/b\n", 119 | " except ZeroDivisionError:\n", 120 | " return \"Error de division entre cero\"\n", 121 | "\n", 122 | "def modulo(a, b):\n", 123 | " try:\n", 124 | " return a%b\n", 125 | " except ZeroDivisionError:\n", 126 | " return \"Error de division entre cero\"\n", 127 | "\n", 128 | "while True:\n", 129 | " try:\n", 130 | " val1 = (int(input(\"Introduce 1er valor: \")))\n", 131 | " val2 = (int(input(\"Introduce 2do valor: \")))\n", 132 | " break\n", 133 | " \n", 134 | " except ValueError:\n", 135 | " print(\"Los Valores no son correctos!, vuelva a intentar.\")\n", 136 | "\n", 137 | "print(\"-------------------------------\")\n", 138 | "print(\"Resultado multiplicacion: \",multiplicacion(val1, val2))\n", 139 | "print(\"Resultado division: \", division(val1, val2))\n", 140 | "print(\"Resultado modulo: \", modulo(val1, val2))\n", 141 | "print(\"-------------------------------\")\n", 142 | "\n", 143 | "print (\"Operacion finalizada!\")" 144 | ], 145 | "metadata": { 146 | "colab": { 147 | "base_uri": "https://localhost:8080/" 148 | }, 149 | "id": "gOSJmOixe0Rx", 150 | "outputId": "6e91f465-6a6a-4de2-9bf8-496ab6390535" 151 | }, 152 | "execution_count": 33, 153 | "outputs": [ 154 | { 155 | "output_type": "stream", 156 | "name": "stdout", 157 | "text": [ 158 | "Introduce 1er valor: 8\n", 159 | "Introduce 2do valor: 0\n", 160 | "-------------------------------\n", 161 | "Resultado multiplicacion: 0\n", 162 | "Resultado division: Error de division entre cero\n", 163 | "Resultado modulo: Error de division entre cero\n", 164 | "-------------------------------\n", 165 | "Operacion finalizada!\n" 166 | ] 167 | } 168 | ] 169 | }, 170 | { 171 | "cell_type": "markdown", 172 | "source": [ 173 | "### **Ejemplo 2: Imprimir la division entre 0 (cero) usando \"else, finally y raise\"** " 174 | ], 175 | "metadata": { 176 | "id": "YibrKfdkfLVB" 177 | } 178 | }, 179 | { 180 | "cell_type": "code", 181 | "source": [ 182 | "def division(a, b):\n", 183 | " try:\n", 184 | " c = a/b\n", 185 | " if c < 0:\n", 186 | " raise ValueError (\"Lo sentimos, los valores introducidos no pueden ser menores que 0!\")\n", 187 | "\n", 188 | " except ZeroDivisionError:\n", 189 | " return \"Error de division entre cero\"\n", 190 | "\n", 191 | " except ValueError as ve:\n", 192 | " print(ve)\n", 193 | "\n", 194 | " else:\n", 195 | " return c\n", 196 | " finally:\n", 197 | " print(\"Termino la funsion division!\")\n", 198 | "\n", 199 | "while True:\n", 200 | " try:\n", 201 | " val1 = (int(input(\"Introduce 1er valor: \")))\n", 202 | " val2 = (int(input(\"Introduce 2do valor: \")))\n", 203 | " break\n", 204 | " \n", 205 | " except ValueError:\n", 206 | " print(\"Los Valores no son correctos!, vuelva a intentar.\")\n", 207 | "\n", 208 | "print(\"-------------------------------\")\n", 209 | "print(\"Resultado division: \", division(val1, val2))\n", 210 | "print(\"-------------------------------\")\n", 211 | "\n", 212 | "print (\"Operacion finalizada!\")" 213 | ], 214 | "metadata": { 215 | "colab": { 216 | "base_uri": "https://localhost:8080/" 217 | }, 218 | "id": "zGV2zo_LfPDB", 219 | "outputId": "5cbcf6c9-f9d0-4d72-d76d-f04ee95e32ba" 220 | }, 221 | "execution_count": 32, 222 | "outputs": [ 223 | { 224 | "output_type": "stream", 225 | "name": "stdout", 226 | "text": [ 227 | "Introduce 1er valor: 8\n", 228 | "Introduce 2do valor: -2\n", 229 | "-------------------------------\n", 230 | "Lo sentimos, los valores introducidos no pueden ser menores que 0!\n", 231 | "Termino la funsion division!\n", 232 | "Resultado division: None\n", 233 | "-------------------------------\n", 234 | "Operacion finalizada!\n" 235 | ] 236 | } 237 | ] 238 | }, 239 | { 240 | "cell_type": "markdown", 241 | "source": [ 242 | "### **Reto 2: Crear una función que calcule el índice de masa corporal (IMC) que mide el contenido de grasa corporal en relación a la estatura y el peso. La función debe recibir como parametro de entrada la altura y el peso y hacer el cálculo\"** " 243 | ], 244 | "metadata": { 245 | "id": "Jynk0w5ilFOi" 246 | } 247 | }, 248 | { 249 | "cell_type": "code", 250 | "source": [ 251 | "def imc(altura, peso):\n", 252 | " try:\n", 253 | " bmi = peso/altura**2\n", 254 | " if peso>500 or altura>220:\n", 255 | " raise ValueError (\"Valores fuera de rango\")\n", 256 | " except ZeroDivisionError:\n", 257 | " print(\"altura debe ser diferente de cero\")\n", 258 | " except TypeError:\n", 259 | " print('Altura y peso solo acepta valores numéricos')\n", 260 | " except ValueError as ve:\n", 261 | " print(ve)\n", 262 | " else:\n", 263 | " return bmi\n", 264 | "def evaluacion(mci):\n", 265 | " if mci < 18.5 :\n", 266 | " print('La persona está baja de peso')\n", 267 | " elif mci >= 25:\n", 268 | " print('La persona presenta sobrepeso')\n", 269 | " elif mci >=18.5 and mci <25:\n", 270 | " print('La persona esta con peso normal')\n", 271 | " else:\n", 272 | " print('No hay suficiente información')\n", 273 | "\n", 274 | "def main():\n", 275 | " try:\n", 276 | " peso = float(input('Introduce el peso de la persona (kgs.): '))\n", 277 | " altura = float(input('Introduce la altura de la persona (mts.): '))\n", 278 | " except TypeError:\n", 279 | " print('Introducir valores numerico')\n", 280 | " except ValueError:\n", 281 | " print('Introducir valores numéricos') \n", 282 | " \n", 283 | " try:\n", 284 | " valorIMC = imc(altura,peso)\n", 285 | " print(\"El IMC de la persona es: \", round(valorIMC))\n", 286 | " evaluacion(valorIMC)\n", 287 | " except UnboundLocalError:\n", 288 | " pass \n", 289 | " except TypeError:\n", 290 | " pass\n", 291 | "\n", 292 | "main()" 293 | ], 294 | "metadata": { 295 | "colab": { 296 | "base_uri": "https://localhost:8080/" 297 | }, 298 | "id": "OD7hAXSm04Yj", 299 | "outputId": "2446fdc0-2c21-4cc9-ce56-07ca50d3861b" 300 | }, 301 | "execution_count": 19, 302 | "outputs": [ 303 | { 304 | "output_type": "stream", 305 | "name": "stdout", 306 | "text": [ 307 | "Introduce el peso de la persona (kgs.): -60\n", 308 | "Introduce la altura de la persona (mts.): -1.60\n", 309 | "El IMC de la persona es: -23\n", 310 | "La persona está baja de peso\n" 311 | ] 312 | } 313 | ] 314 | } 315 | ] 316 | } -------------------------------------------------------------------------------- /Worshop Python # 7: Ficheros/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | click = "*" 8 | coloredlogs = "*" 9 | verboselogs = "*" 10 | jupyterlab = "*" 11 | 12 | [dev-packages] 13 | 14 | [requires] 15 | python_version = "3.9" 16 | -------------------------------------------------------------------------------- /Worshop Python # 7: Ficheros/Pipfile.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_meta": { 3 | "hash": { 4 | "sha256": "874a9e455d24b4f48960b06a57a17f9b62b01bc0265fbb6976c3ae82e8cc91eb" 5 | }, 6 | "pipfile-spec": 6, 7 | "requires": { 8 | "python_version": "3.9" 9 | }, 10 | "sources": [ 11 | { 12 | "name": "pypi", 13 | "url": "https://pypi.org/simple", 14 | "verify_ssl": true 15 | } 16 | ] 17 | }, 18 | "default": { 19 | "anyio": { 20 | "hashes": [ 21 | "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421", 22 | "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3" 23 | ], 24 | "markers": "python_full_version >= '3.6.2'", 25 | "version": "==3.6.2" 26 | }, 27 | "argon2-cffi": { 28 | "hashes": [ 29 | "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80", 30 | "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b" 31 | ], 32 | "markers": "python_version >= '3.6'", 33 | "version": "==21.3.0" 34 | }, 35 | "argon2-cffi-bindings": { 36 | "hashes": [ 37 | "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670", 38 | "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f", 39 | "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583", 40 | "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194", 41 | "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", 42 | "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a", 43 | "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", 44 | "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5", 45 | "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", 46 | "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7", 47 | "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", 48 | "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", 49 | "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", 50 | "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", 51 | "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", 52 | "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", 53 | "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d", 54 | "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", 55 | "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb", 56 | "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", 57 | "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351" 58 | ], 59 | "markers": "python_version >= '3.6'", 60 | "version": "==21.2.0" 61 | }, 62 | "asttokens": { 63 | "hashes": [ 64 | "sha256:1b28ed85e254b724439afc783d4bee767f780b936c3fe8b3275332f42cf5f561", 65 | "sha256:4aa76401a151c8cc572d906aad7aea2a841780834a19d780f4321c0fe1b54635" 66 | ], 67 | "version": "==2.1.0" 68 | }, 69 | "attrs": { 70 | "hashes": [ 71 | "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", 72 | "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" 73 | ], 74 | "markers": "python_version >= '3.5'", 75 | "version": "==22.1.0" 76 | }, 77 | "babel": { 78 | "hashes": [ 79 | "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe", 80 | "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6" 81 | ], 82 | "markers": "python_version >= '3.6'", 83 | "version": "==2.11.0" 84 | }, 85 | "backcall": { 86 | "hashes": [ 87 | "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", 88 | "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255" 89 | ], 90 | "version": "==0.2.0" 91 | }, 92 | "beautifulsoup4": { 93 | "hashes": [ 94 | "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30", 95 | "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693" 96 | ], 97 | "markers": "python_version >= '3.6'", 98 | "version": "==4.11.1" 99 | }, 100 | "bleach": { 101 | "hashes": [ 102 | "sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a", 103 | "sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c" 104 | ], 105 | "markers": "python_version >= '3.7'", 106 | "version": "==5.0.1" 107 | }, 108 | "certifi": { 109 | "hashes": [ 110 | "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", 111 | "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" 112 | ], 113 | "markers": "python_version >= '3.6'", 114 | "version": "==2022.9.24" 115 | }, 116 | "cffi": { 117 | "hashes": [ 118 | "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", 119 | "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", 120 | "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", 121 | "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", 122 | "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", 123 | "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", 124 | "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", 125 | "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", 126 | "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", 127 | "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", 128 | "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", 129 | "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", 130 | "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", 131 | "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", 132 | "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", 133 | "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", 134 | "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", 135 | "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", 136 | "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", 137 | "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", 138 | "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", 139 | "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", 140 | "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", 141 | "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", 142 | "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", 143 | "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", 144 | "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", 145 | "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", 146 | "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", 147 | "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", 148 | "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", 149 | "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", 150 | "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", 151 | "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", 152 | "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", 153 | "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", 154 | "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", 155 | "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", 156 | "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", 157 | "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", 158 | "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", 159 | "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", 160 | "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", 161 | "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", 162 | "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", 163 | "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", 164 | "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", 165 | "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", 166 | "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", 167 | "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", 168 | "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", 169 | "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", 170 | "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", 171 | "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", 172 | "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", 173 | "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", 174 | "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", 175 | "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", 176 | "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", 177 | "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", 178 | "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", 179 | "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", 180 | "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", 181 | "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" 182 | ], 183 | "version": "==1.15.1" 184 | }, 185 | "charset-normalizer": { 186 | "hashes": [ 187 | "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", 188 | "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" 189 | ], 190 | "markers": "python_version >= '3.6'", 191 | "version": "==2.1.1" 192 | }, 193 | "click": { 194 | "hashes": [ 195 | "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", 196 | "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" 197 | ], 198 | "index": "pypi", 199 | "version": "==8.1.3" 200 | }, 201 | "coloredlogs": { 202 | "hashes": [ 203 | "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934", 204 | "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0" 205 | ], 206 | "index": "pypi", 207 | "version": "==15.0.1" 208 | }, 209 | "debugpy": { 210 | "hashes": [ 211 | "sha256:34d2cdd3a7c87302ba5322b86e79c32c2115be396f3f09ca13306d8a04fe0f16", 212 | "sha256:3c9f985944a30cfc9ae4306ac6a27b9c31dba72ca943214dad4a0ab3840f6161", 213 | "sha256:4e255982552b0edfe3a6264438dbd62d404baa6556a81a88f9420d3ed79b06ae", 214 | "sha256:5ad571a36cec137ae6ed951d0ff75b5e092e9af6683da084753231150cbc5b25", 215 | "sha256:6efc30325b68e451118b795eff6fe8488253ca3958251d5158106d9c87581bc6", 216 | "sha256:7c302095a81be0d5c19f6529b600bac971440db3e226dce85347cc27e6a61908", 217 | "sha256:84c39940a0cac410bf6aa4db00ba174f973eef521fbe9dd058e26bcabad89c4f", 218 | "sha256:86d784b72c5411c833af1cd45b83d80c252b77c3bfdb43db17c441d772f4c734", 219 | "sha256:adcfea5ea06d55d505375995e150c06445e2b20cd12885bcae566148c076636b", 220 | "sha256:b8deaeb779699350deeed835322730a3efec170b88927debc9ba07a1a38e2585", 221 | "sha256:c4b2bd5c245eeb49824bf7e539f95fb17f9a756186e51c3e513e32999d8846f3", 222 | "sha256:c4cd6f37e3c168080d61d698390dfe2cd9e74ebf80b448069822a15dadcda57d", 223 | "sha256:cca23cb6161ac89698d629d892520327dd1be9321c0960e610bbcb807232b45d", 224 | "sha256:d5c814596a170a0a58fa6fad74947e30bfd7e192a5d2d7bd6a12156c2899e13a", 225 | "sha256:daadab4403427abd090eccb38d8901afd8b393e01fd243048fab3f1d7132abb4", 226 | "sha256:dda8652520eae3945833e061cbe2993ad94a0b545aebd62e4e6b80ee616c76b2", 227 | "sha256:e8922090514a890eec99cfb991bab872dd2e353ebb793164d5f01c362b9a40bf", 228 | "sha256:fc233a0160f3b117b20216f1169e7211b83235e3cd6749bcdd8dbb72177030c7" 229 | ], 230 | "markers": "python_version >= '3.7'", 231 | "version": "==1.6.3" 232 | }, 233 | "decorator": { 234 | "hashes": [ 235 | "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", 236 | "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" 237 | ], 238 | "markers": "python_version >= '3.5'", 239 | "version": "==5.1.1" 240 | }, 241 | "defusedxml": { 242 | "hashes": [ 243 | "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", 244 | "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61" 245 | ], 246 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 247 | "version": "==0.7.1" 248 | }, 249 | "entrypoints": { 250 | "hashes": [ 251 | "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4", 252 | "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f" 253 | ], 254 | "markers": "python_version >= '3.6'", 255 | "version": "==0.4" 256 | }, 257 | "executing": { 258 | "hashes": [ 259 | "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc", 260 | "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107" 261 | ], 262 | "version": "==1.2.0" 263 | }, 264 | "fastjsonschema": { 265 | "hashes": [ 266 | "sha256:01e366f25d9047816fe3d288cbfc3e10541daf0af2044763f3d0ade42476da18", 267 | "sha256:21f918e8d9a1a4ba9c22e09574ba72267a6762d47822db9add95f6454e51cc1c" 268 | ], 269 | "version": "==2.16.2" 270 | }, 271 | "humanfriendly": { 272 | "hashes": [ 273 | "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477", 274 | "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc" 275 | ], 276 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 277 | "version": "==10.0" 278 | }, 279 | "idna": { 280 | "hashes": [ 281 | "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", 282 | "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" 283 | ], 284 | "markers": "python_version >= '3.5'", 285 | "version": "==3.4" 286 | }, 287 | "importlib-metadata": { 288 | "hashes": [ 289 | "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab", 290 | "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43" 291 | ], 292 | "markers": "python_version < '3.10'", 293 | "version": "==5.0.0" 294 | }, 295 | "ipykernel": { 296 | "hashes": [ 297 | "sha256:301fdb487587c9bf277025001da97b53697aab73ae1268d9d1ba972a2c5fc801", 298 | "sha256:e195cf6d8c3dd5d41f3cf8ad831d9891f95d7d18fa6d5fb4d30a713df99b26a4" 299 | ], 300 | "markers": "python_version >= '3.8'", 301 | "version": "==6.17.0" 302 | }, 303 | "ipython": { 304 | "hashes": [ 305 | "sha256:7c959e3dedbf7ed81f9b9d8833df252c430610e2a4a6464ec13cd20975ce20a5", 306 | "sha256:91ef03016bcf72dd17190f863476e7c799c6126ec7e8be97719d1bc9a78a59a4" 307 | ], 308 | "markers": "python_version >= '3.8'", 309 | "version": "==8.6.0" 310 | }, 311 | "ipython-genutils": { 312 | "hashes": [ 313 | "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", 314 | "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" 315 | ], 316 | "version": "==0.2.0" 317 | }, 318 | "jedi": { 319 | "hashes": [ 320 | "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d", 321 | "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab" 322 | ], 323 | "markers": "python_version >= '3.6'", 324 | "version": "==0.18.1" 325 | }, 326 | "jinja2": { 327 | "hashes": [ 328 | "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", 329 | "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" 330 | ], 331 | "markers": "python_version >= '3.7'", 332 | "version": "==3.1.2" 333 | }, 334 | "json5": { 335 | "hashes": [ 336 | "sha256:993189671e7412e9cdd8be8dc61cf402e8e579b35f1d1bb20ae6b09baa78bbce", 337 | "sha256:ad9f048c5b5a4c3802524474ce40a622fae789860a86f10cc4f7e5f9cf9b46ab" 338 | ], 339 | "version": "==0.9.10" 340 | }, 341 | "jsonschema": { 342 | "hashes": [ 343 | "sha256:5bfcf2bca16a087ade17e02b282d34af7ccd749ef76241e7f9bd7c0cb8a9424d", 344 | "sha256:f660066c3966db7d6daeaea8a75e0b68237a48e51cf49882087757bb59916248" 345 | ], 346 | "markers": "python_version >= '3.7'", 347 | "version": "==4.17.0" 348 | }, 349 | "jupyter-client": { 350 | "hashes": [ 351 | "sha256:1c1d418ef32a45a1fae0b243e6f01cc9bf65fa8ddbd491a034b9ba6ac6502951", 352 | "sha256:5616db609ac720422e6a4b893d6572b8d655ff41e058367f4459a0d2c0726832" 353 | ], 354 | "markers": "python_version >= '3.7'", 355 | "version": "==7.4.4" 356 | }, 357 | "jupyter-core": { 358 | "hashes": [ 359 | "sha256:3815e80ec5272c0c19aad087a0d2775df2852cfca8f5a17069e99c9350cecff8", 360 | "sha256:c2909b9bc7dca75560a6c5ae78c34fd305ede31cd864da3c0d0bb2ed89aa9337" 361 | ], 362 | "markers": "python_version >= '3.7'", 363 | "version": "==4.11.2" 364 | }, 365 | "jupyter-server": { 366 | "hashes": [ 367 | "sha256:992531008544d77e05a16251cdfbd0bdff1b1efa14760c79b9cc776ac9214cf1", 368 | "sha256:d0adca19913a3763359be7f0b8c2ea8bfde356f4b8edd8e3149d7d0fbfaa248b" 369 | ], 370 | "markers": "python_version >= '3.7'", 371 | "version": "==1.21.0" 372 | }, 373 | "jupyterlab": { 374 | "hashes": [ 375 | "sha256:e02556c8ea1b386963c4b464e4618aee153c5416b07ab481425c817a033323a2", 376 | "sha256:f433059fe0e12d75ea90a81a0b6721113bb132857e3ec2197780b6fe84cbcbde" 377 | ], 378 | "index": "pypi", 379 | "version": "==3.5.0" 380 | }, 381 | "jupyterlab-pygments": { 382 | "hashes": [ 383 | "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f", 384 | "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d" 385 | ], 386 | "markers": "python_version >= '3.7'", 387 | "version": "==0.2.2" 388 | }, 389 | "jupyterlab-server": { 390 | "hashes": [ 391 | "sha256:07007a3a0a30bfc6424b28b76df8d67386cc2d5f9f42886773b1b3c473cb9a3f", 392 | "sha256:7ad1a37a716f6d10e90185c636c122d55a58ef3141ae50f9d0601d3ccf54d43e" 393 | ], 394 | "markers": "python_version >= '3.7'", 395 | "version": "==2.16.2" 396 | }, 397 | "markupsafe": { 398 | "hashes": [ 399 | "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", 400 | "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", 401 | "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", 402 | "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", 403 | "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", 404 | "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", 405 | "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", 406 | "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", 407 | "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", 408 | "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", 409 | "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", 410 | "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", 411 | "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", 412 | "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", 413 | "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", 414 | "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", 415 | "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", 416 | "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", 417 | "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", 418 | "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", 419 | "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", 420 | "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", 421 | "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", 422 | "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", 423 | "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", 424 | "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", 425 | "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", 426 | "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", 427 | "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", 428 | "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", 429 | "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", 430 | "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", 431 | "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", 432 | "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", 433 | "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", 434 | "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", 435 | "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", 436 | "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", 437 | "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", 438 | "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" 439 | ], 440 | "markers": "python_version >= '3.7'", 441 | "version": "==2.1.1" 442 | }, 443 | "matplotlib-inline": { 444 | "hashes": [ 445 | "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311", 446 | "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304" 447 | ], 448 | "markers": "python_version >= '3.5'", 449 | "version": "==0.1.6" 450 | }, 451 | "mistune": { 452 | "hashes": [ 453 | "sha256:182cc5ee6f8ed1b807de6b7bb50155df7b66495412836b9a74c8fbdfc75fe36d", 454 | "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808" 455 | ], 456 | "version": "==2.0.4" 457 | }, 458 | "nbclassic": { 459 | "hashes": [ 460 | "sha256:c74d8a500f8e058d46b576a41e5bc640711e1032cf7541dde5f73ea49497e283", 461 | "sha256:cbf05df5842b420d5cece0143462380ea9d308ff57c2dc0eb4d6e035b18fbfb3" 462 | ], 463 | "markers": "python_version >= '3.7'", 464 | "version": "==0.4.8" 465 | }, 466 | "nbclient": { 467 | "hashes": [ 468 | "sha256:434c91385cf3e53084185334d675a0d33c615108b391e260915d1aa8e86661b8", 469 | "sha256:a1d844efd6da9bc39d2209bf996dbd8e07bf0f36b796edfabaa8f8a9ab77c3aa" 470 | ], 471 | "markers": "python_version >= '3.7'", 472 | "version": "==0.7.0" 473 | }, 474 | "nbconvert": { 475 | "hashes": [ 476 | "sha256:66326174c190dc4f0a6cbbff96f30c632774b441fa3c7565662bb3d41992fb0f", 477 | "sha256:7ae7ccc68495b565dab153459ee7e65039970913eb115070da6e2c673cf0e9f8" 478 | ], 479 | "markers": "python_version >= '3.7'", 480 | "version": "==7.2.3" 481 | }, 482 | "nbformat": { 483 | "hashes": [ 484 | "sha256:1b05ec2c552c2f1adc745f4eddce1eac8ca9ffd59bb9fd859e827eaa031319f9", 485 | "sha256:1d4760c15c1a04269ef5caf375be8b98dd2f696e5eb9e603ec2bf091f9b0d3f3" 486 | ], 487 | "markers": "python_version >= '3.7'", 488 | "version": "==5.7.0" 489 | }, 490 | "nest-asyncio": { 491 | "hashes": [ 492 | "sha256:b9a953fb40dceaa587d109609098db21900182b16440652454a146cffb06e8b8", 493 | "sha256:d267cc1ff794403f7df692964d1d2a3fa9418ffea2a3f6859a439ff482fef290" 494 | ], 495 | "markers": "python_version >= '3.5'", 496 | "version": "==1.5.6" 497 | }, 498 | "notebook": { 499 | "hashes": [ 500 | "sha256:c1897e5317e225fc78b45549a6ab4b668e4c996fd03a04e938fe5e7af2bfffd0", 501 | "sha256:e04f9018ceb86e4fa841e92ea8fb214f8d23c1cedfde530cc96f92446924f0e4" 502 | ], 503 | "markers": "python_version >= '3.7'", 504 | "version": "==6.5.2" 505 | }, 506 | "notebook-shim": { 507 | "hashes": [ 508 | "sha256:090e0baf9a5582ff59b607af523ca2db68ff216da0c69956b62cab2ef4fc9c3f", 509 | "sha256:9c6c30f74c4fbea6fce55c1be58e7fd0409b1c681b075dcedceb005db5026949" 510 | ], 511 | "markers": "python_version >= '3.7'", 512 | "version": "==0.2.2" 513 | }, 514 | "packaging": { 515 | "hashes": [ 516 | "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", 517 | "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" 518 | ], 519 | "markers": "python_version >= '3.6'", 520 | "version": "==21.3" 521 | }, 522 | "pandocfilters": { 523 | "hashes": [ 524 | "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38", 525 | "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f" 526 | ], 527 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 528 | "version": "==1.5.0" 529 | }, 530 | "parso": { 531 | "hashes": [ 532 | "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0", 533 | "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75" 534 | ], 535 | "markers": "python_version >= '3.6'", 536 | "version": "==0.8.3" 537 | }, 538 | "pexpect": { 539 | "hashes": [ 540 | "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", 541 | "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" 542 | ], 543 | "markers": "sys_platform != 'win32'", 544 | "version": "==4.8.0" 545 | }, 546 | "pickleshare": { 547 | "hashes": [ 548 | "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", 549 | "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" 550 | ], 551 | "version": "==0.7.5" 552 | }, 553 | "prometheus-client": { 554 | "hashes": [ 555 | "sha256:be26aa452490cfcf6da953f9436e95a9f2b4d578ca80094b4458930e5f584ab1", 556 | "sha256:db7c05cbd13a0f79975592d112320f2605a325969b270a94b71dcabc47b931d2" 557 | ], 558 | "markers": "python_version >= '3.6'", 559 | "version": "==0.15.0" 560 | }, 561 | "prompt-toolkit": { 562 | "hashes": [ 563 | "sha256:24becda58d49ceac4dc26232eb179ef2b21f133fecda7eed6018d341766ed76e", 564 | "sha256:e7f2129cba4ff3b3656bbdda0e74ee00d2f874a8bcdb9dd16f5fec7b3e173cae" 565 | ], 566 | "markers": "python_full_version >= '3.6.2'", 567 | "version": "==3.0.32" 568 | }, 569 | "psutil": { 570 | "hashes": [ 571 | "sha256:07d880053c6461c9b89cd5d4808f3b8336665fa3acdefd6777662c5ed73a851a", 572 | "sha256:12500d761ac091f2426567f19f95fd3f15a197d96befb44a5c1e3cbe6db5752c", 573 | "sha256:1b540599481c73408f6b392cdffef5b01e8ff7a2ac8caae0a91b8222e88e8f1e", 574 | "sha256:35feafe232d1aaf35d51bd42790cbccb882456f9f18cdc411532902370d660df", 575 | "sha256:3a7826e68b0cf4ce2c1ee385d64eab7d70e3133171376cac53d7c1790357ec8f", 576 | "sha256:46907fa62acaac364fff0b8a9da7b360265d217e4fdeaca0a2397a6883dffba2", 577 | "sha256:4bd4854f0c83aa84a5a40d3b5d0eb1f3c128f4146371e03baed4589fe4f3c931", 578 | "sha256:538fcf6ae856b5e12d13d7da25ad67f02113c96f5989e6ad44422cb5994ca7fc", 579 | "sha256:547ebb02031fdada635452250ff39942db8310b5c4a8102dfe9384ee5791e650", 580 | "sha256:5e8b50241dd3c2ed498507f87a6602825073c07f3b7e9560c58411c14fe1e1c9", 581 | "sha256:5fa88e3d5d0b480602553d362c4b33a63e0c40bfea7312a7bf78799e01e0810b", 582 | "sha256:68fa227c32240c52982cb931801c5707a7f96dd8927f9102d6c7771ea1ff5698", 583 | "sha256:6ced1ad823ecfa7d3ce26fe8aa4996e2e53fb49b7fed8ad81c80958501ec0619", 584 | "sha256:71b1206e7909792d16933a0d2c1c7f04ae196186c51ba8567abae1d041f06dcb", 585 | "sha256:767ef4fa33acda16703725c0473a91e1832d296c37c63896c7153ba81698f1ab", 586 | "sha256:7ccfcdfea4fc4b0a02ca2c31de7fcd186beb9cff8207800e14ab66f79c773af6", 587 | "sha256:7e4939ff75149b67aef77980409f156f0082fa36accc475d45c705bb00c6c16a", 588 | "sha256:828c9dc9478b34ab96be75c81942d8df0c2bb49edbb481f597314d92b6441d89", 589 | "sha256:8a4e07611997acf178ad13b842377e3d8e9d0a5bac43ece9bfc22a96735d9a4f", 590 | "sha256:941a6c2c591da455d760121b44097781bc970be40e0e43081b9139da485ad5b7", 591 | "sha256:9a4af6ed1094f867834f5f07acd1250605a0874169a5fcadbcec864aec2496a6", 592 | "sha256:9ec296f565191f89c48f33d9544d8d82b0d2af7dd7d2d4e6319f27a818f8d1cc", 593 | "sha256:9ec95df684583b5596c82bb380c53a603bb051cf019d5c849c47e117c5064395", 594 | "sha256:a04a1836894c8279e5e0a0127c0db8e198ca133d28be8a2a72b4db16f6cf99c1", 595 | "sha256:a3d81165b8474087bb90ec4f333a638ccfd1d69d34a9b4a1a7eaac06648f9fbe", 596 | "sha256:b4a247cd3feaae39bb6085fcebf35b3b8ecd9b022db796d89c8f05067ca28e71", 597 | "sha256:ba38cf9984d5462b506e239cf4bc24e84ead4b1d71a3be35e66dad0d13ded7c1", 598 | "sha256:beb57d8a1ca0ae0eb3d08ccaceb77e1a6d93606f0e1754f0d60a6ebd5c288837", 599 | "sha256:d266cd05bd4a95ca1c2b9b5aac50d249cf7c94a542f47e0b22928ddf8b80d1ef", 600 | "sha256:d8c3cc6bb76492133474e130a12351a325336c01c96a24aae731abf5a47fe088", 601 | "sha256:db8e62016add2235cc87fb7ea000ede9e4ca0aa1f221b40cef049d02d5d2593d", 602 | "sha256:e7507f6c7b0262d3e7b0eeda15045bf5881f4ada70473b87bc7b7c93b992a7d7", 603 | "sha256:ed15edb14f52925869250b1375f0ff58ca5c4fa8adefe4883cfb0737d32f5c02", 604 | "sha256:f57d63a2b5beaf797b87024d018772439f9d3103a395627b77d17a8d72009543", 605 | "sha256:fa5e32c7d9b60b2528108ade2929b115167fe98d59f89555574715054f50fa31", 606 | "sha256:fe79b4ad4836e3da6c4650cb85a663b3a51aef22e1a829c384e18fae87e5e727" 607 | ], 608 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 609 | "version": "==5.9.3" 610 | }, 611 | "ptyprocess": { 612 | "hashes": [ 613 | "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", 614 | "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220" 615 | ], 616 | "version": "==0.7.0" 617 | }, 618 | "pure-eval": { 619 | "hashes": [ 620 | "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350", 621 | "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3" 622 | ], 623 | "version": "==0.2.2" 624 | }, 625 | "pycparser": { 626 | "hashes": [ 627 | "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", 628 | "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206" 629 | ], 630 | "version": "==2.21" 631 | }, 632 | "pygments": { 633 | "hashes": [ 634 | "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1", 635 | "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42" 636 | ], 637 | "markers": "python_version >= '3.6'", 638 | "version": "==2.13.0" 639 | }, 640 | "pyparsing": { 641 | "hashes": [ 642 | "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", 643 | "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" 644 | ], 645 | "markers": "python_full_version >= '3.6.8'", 646 | "version": "==3.0.9" 647 | }, 648 | "pyrsistent": { 649 | "hashes": [ 650 | "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed", 651 | "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb", 652 | "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a", 653 | "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95", 654 | "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712", 655 | "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73", 656 | "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41", 657 | "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b", 658 | "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78", 659 | "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab", 660 | "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308", 661 | "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425", 662 | "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2", 663 | "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e", 664 | "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6", 665 | "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2", 666 | "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a", 667 | "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291", 668 | "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584", 669 | "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a", 670 | "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0", 671 | "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770" 672 | ], 673 | "markers": "python_version >= '3.7'", 674 | "version": "==0.19.2" 675 | }, 676 | "python-dateutil": { 677 | "hashes": [ 678 | "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", 679 | "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" 680 | ], 681 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 682 | "version": "==2.8.2" 683 | }, 684 | "pytz": { 685 | "hashes": [ 686 | "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427", 687 | "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2" 688 | ], 689 | "version": "==2022.6" 690 | }, 691 | "pyzmq": { 692 | "hashes": [ 693 | "sha256:0108358dab8c6b27ff6b985c2af4b12665c1bc659648284153ee501000f5c107", 694 | "sha256:07bec1a1b22dacf718f2c0e71b49600bb6a31a88f06527dfd0b5aababe3fa3f7", 695 | "sha256:0e8f482c44ccb5884bf3f638f29bea0f8dc68c97e38b2061769c4cb697f6140d", 696 | "sha256:0ec91f1bad66f3ee8c6deb65fa1fe418e8ad803efedd69c35f3b5502f43bd1dc", 697 | "sha256:0f14cffd32e9c4c73da66db97853a6aeceaac34acdc0fae9e5bbc9370281864c", 698 | "sha256:15975747462ec49fdc863af906bab87c43b2491403ab37a6d88410635786b0f4", 699 | "sha256:1724117bae69e091309ffb8255412c4651d3f6355560d9af312d547f6c5bc8b8", 700 | "sha256:1a7c280185c4da99e0cc06c63bdf91f5b0b71deb70d8717f0ab870a43e376db8", 701 | "sha256:1b7928bb7580736ffac5baf814097be342ba08d3cfdfb48e52773ec959572287", 702 | "sha256:2032d9cb994ce3b4cba2b8dfae08c7e25bc14ba484c770d4d3be33c27de8c45b", 703 | "sha256:20e7eeb1166087db636c06cae04a1ef59298627f56fb17da10528ab52a14c87f", 704 | "sha256:216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77", 705 | "sha256:28b119ba97129d3001673a697b7cce47fe6de1f7255d104c2f01108a5179a066", 706 | "sha256:3104f4b084ad5d9c0cb87445cc8cfd96bba710bef4a66c2674910127044df209", 707 | "sha256:3e6192dbcefaaa52ed81be88525a54a445f4b4fe2fffcae7fe40ebb58bd06bfd", 708 | "sha256:42d4f97b9795a7aafa152a36fe2ad44549b83a743fd3e77011136def512e6c2a", 709 | "sha256:44e706bac34e9f50779cb8c39f10b53a4d15aebb97235643d3112ac20bd577b4", 710 | "sha256:47b11a729d61a47df56346283a4a800fa379ae6a85870d5a2e1e4956c828eedc", 711 | "sha256:4854f9edc5208f63f0841c0c667260ae8d6846cfa233c479e29fdc85d42ebd58", 712 | "sha256:48f721f070726cd2a6e44f3c33f8ee4b24188e4b816e6dd8ba542c8c3bb5b246", 713 | "sha256:52afb0ac962963fff30cf1be775bc51ae083ef4c1e354266ab20e5382057dd62", 714 | "sha256:54d8b9c5e288362ec8595c1d98666d36f2070fd0c2f76e2b3c60fbad9bd76227", 715 | "sha256:5bd3d7dfd9cd058eb68d9a905dec854f86649f64d4ddf21f3ec289341386c44b", 716 | "sha256:613010b5d17906c4367609e6f52e9a2595e35d5cc27d36ff3f1b6fa6e954d944", 717 | "sha256:624321120f7e60336be8ec74a172ae7fba5c3ed5bf787cc85f7e9986c9e0ebc2", 718 | "sha256:65c94410b5a8355cfcf12fd600a313efee46ce96a09e911ea92cf2acf6708804", 719 | "sha256:6640f83df0ae4ae1104d4c62b77e9ef39be85ebe53f636388707d532bee2b7b8", 720 | "sha256:687700f8371643916a1d2c61f3fdaa630407dd205c38afff936545d7b7466066", 721 | "sha256:77c2713faf25a953c69cf0f723d1b7dd83827b0834e6c41e3fb3bbc6765914a1", 722 | "sha256:78068e8678ca023594e4a0ab558905c1033b2d3e806a0ad9e3094e231e115a33", 723 | "sha256:7a23ccc1083c260fa9685c93e3b170baba45aeed4b524deb3f426b0c40c11639", 724 | "sha256:7abddb2bd5489d30ffeb4b93a428130886c171b4d355ccd226e83254fcb6b9ef", 725 | "sha256:80093b595921eed1a2cead546a683b9e2ae7f4a4592bb2ab22f70d30174f003a", 726 | "sha256:8242543c522d84d033fe79be04cb559b80d7eb98ad81b137ff7e0a9020f00ace", 727 | "sha256:838812c65ed5f7c2bd11f7b098d2e5d01685a3f6d1f82849423b570bae698c00", 728 | "sha256:83ea1a398f192957cb986d9206ce229efe0ee75e3c6635baff53ddf39bd718d5", 729 | "sha256:8421aa8c9b45ea608c205db9e1c0c855c7e54d0e9c2c2f337ce024f6843cab3b", 730 | "sha256:858375573c9225cc8e5b49bfac846a77b696b8d5e815711b8d4ba3141e6e8879", 731 | "sha256:86de64468cad9c6d269f32a6390e210ca5ada568c7a55de8e681ca3b897bb340", 732 | "sha256:87f7ac99b15270db8d53f28c3c7b968612993a90a5cf359da354efe96f5372b4", 733 | "sha256:8bad8210ad4df68c44ff3685cca3cda448ee46e20d13edcff8909eba6ec01ca4", 734 | "sha256:8bb4af15f305056e95ca1bd086239b9ebc6ad55e9f49076d27d80027f72752f6", 735 | "sha256:8c78bfe20d4c890cb5580a3b9290f700c570e167d4cdcc55feec07030297a5e3", 736 | "sha256:8f3f3154fde2b1ff3aa7b4f9326347ebc89c8ef425ca1db8f665175e6d3bd42f", 737 | "sha256:94010bd61bc168c103a5b3b0f56ed3b616688192db7cd5b1d626e49f28ff51b3", 738 | "sha256:941fab0073f0a54dc33d1a0460cb04e0d85893cb0c5e1476c785000f8b359409", 739 | "sha256:9dca7c3956b03b7663fac4d150f5e6d4f6f38b2462c1e9afd83bcf7019f17913", 740 | "sha256:a180dbd5ea5d47c2d3b716d5c19cc3fb162d1c8db93b21a1295d69585bfddac1", 741 | "sha256:a2712aee7b3834ace51738c15d9ee152cc5a98dc7d57dd93300461b792ab7b43", 742 | "sha256:a435ef8a3bd95c8a2d316d6e0ff70d0db524f6037411652803e118871d703333", 743 | "sha256:abb756147314430bee5d10919b8493c0ccb109ddb7f5dfd2fcd7441266a25b75", 744 | "sha256:abe6eb10122f0d746a0d510c2039ae8edb27bc9af29f6d1b05a66cc2401353ff", 745 | "sha256:acbd0a6d61cc954b9f535daaa9ec26b0a60a0d4353c5f7c1438ebc88a359a47e", 746 | "sha256:ae08ac90aa8fa14caafc7a6251bd218bf6dac518b7bff09caaa5e781119ba3f2", 747 | "sha256:ae61446166983c663cee42c852ed63899e43e484abf080089f771df4b9d272ef", 748 | "sha256:afe1f3bc486d0ce40abb0a0c9adb39aed3bbac36ebdc596487b0cceba55c21c1", 749 | "sha256:b946da90dc2799bcafa682692c1d2139b2a96ec3c24fa9fc6f5b0da782675330", 750 | "sha256:b947e264f0e77d30dcbccbb00f49f900b204b922eb0c3a9f0afd61aaa1cedc3d", 751 | "sha256:bb5635c851eef3a7a54becde6da99485eecf7d068bd885ac8e6d173c4ecd68b0", 752 | "sha256:bcbebd369493d68162cddb74a9c1fcebd139dfbb7ddb23d8f8e43e6c87bac3a6", 753 | "sha256:c31805d2c8ade9b11feca4674eee2b9cce1fec3e8ddb7bbdd961a09dc76a80ea", 754 | "sha256:c8840f064b1fb377cffd3efeaad2b190c14d4c8da02316dae07571252d20b31f", 755 | "sha256:ccb94342d13e3bf3ffa6e62f95b5e3f0bc6bfa94558cb37f4b3d09d6feb536ff", 756 | "sha256:d66689e840e75221b0b290b0befa86f059fb35e1ee6443bce51516d4d61b6b99", 757 | "sha256:dabf1a05318d95b1537fd61d9330ef4313ea1216eea128a17615038859da3b3b", 758 | "sha256:db03704b3506455d86ec72c3358a779e9b1d07b61220dfb43702b7b668edcd0d", 759 | "sha256:de4217b9eb8b541cf2b7fde4401ce9d9a411cc0af85d410f9d6f4333f43640be", 760 | "sha256:df0841f94928f8af9c7a1f0aaaffba1fb74607af023a152f59379c01c53aee58", 761 | "sha256:dfb992dbcd88d8254471760879d48fb20836d91baa90f181c957122f9592b3dc", 762 | "sha256:e7e66b4e403c2836ac74f26c4b65d8ac0ca1eef41dfcac2d013b7482befaad83", 763 | "sha256:e8012bce6836d3f20a6c9599f81dfa945f433dab4dbd0c4917a6fb1f998ab33d", 764 | "sha256:f01de4ec083daebf210531e2cca3bdb1608dbbbe00a9723e261d92087a1f6ebc", 765 | "sha256:f0d945a85b70da97ae86113faf9f1b9294efe66bd4a5d6f82f2676d567338b66", 766 | "sha256:fa0ae3275ef706c0309556061185dd0e4c4cd3b7d6f67ae617e4e677c7a41e2e" 767 | ], 768 | "markers": "python_version >= '3.6'", 769 | "version": "==24.0.1" 770 | }, 771 | "requests": { 772 | "hashes": [ 773 | "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", 774 | "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" 775 | ], 776 | "markers": "python_version >= '3.7' and python_version < '4'", 777 | "version": "==2.28.1" 778 | }, 779 | "send2trash": { 780 | "hashes": [ 781 | "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d", 782 | "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08" 783 | ], 784 | "version": "==1.8.0" 785 | }, 786 | "six": { 787 | "hashes": [ 788 | "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", 789 | "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" 790 | ], 791 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 792 | "version": "==1.16.0" 793 | }, 794 | "sniffio": { 795 | "hashes": [ 796 | "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101", 797 | "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384" 798 | ], 799 | "markers": "python_version >= '3.7'", 800 | "version": "==1.3.0" 801 | }, 802 | "soupsieve": { 803 | "hashes": [ 804 | "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759", 805 | "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d" 806 | ], 807 | "markers": "python_version >= '3.6'", 808 | "version": "==2.3.2.post1" 809 | }, 810 | "stack-data": { 811 | "hashes": [ 812 | "sha256:8e515439f818efaa251036af72d89e4026e2b03993f3453c000b200fb4f2d6aa", 813 | "sha256:b92d206ef355a367d14316b786ab41cb99eb453a21f2cb216a4204625ff7bc07" 814 | ], 815 | "version": "==0.6.0" 816 | }, 817 | "terminado": { 818 | "hashes": [ 819 | "sha256:520feaa3aeab8ad64a69ca779be54be9234edb2d0d6567e76c93c2c9a4e6e43f", 820 | "sha256:bf6fe52accd06d0661d7611cc73202121ec6ee51e46d8185d489ac074ca457c2" 821 | ], 822 | "markers": "python_version >= '3.7'", 823 | "version": "==0.17.0" 824 | }, 825 | "tinycss2": { 826 | "hashes": [ 827 | "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847", 828 | "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627" 829 | ], 830 | "markers": "python_version >= '3.7'", 831 | "version": "==1.2.1" 832 | }, 833 | "tomli": { 834 | "hashes": [ 835 | "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", 836 | "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" 837 | ], 838 | "markers": "python_version >= '3.7'", 839 | "version": "==2.0.1" 840 | }, 841 | "tornado": { 842 | "hashes": [ 843 | "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca", 844 | "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72", 845 | "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23", 846 | "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8", 847 | "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b", 848 | "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9", 849 | "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13", 850 | "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75", 851 | "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac", 852 | "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e", 853 | "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b" 854 | ], 855 | "markers": "python_version >= '3.7'", 856 | "version": "==6.2" 857 | }, 858 | "traitlets": { 859 | "hashes": [ 860 | "sha256:1201b2c9f76097195989cdf7f65db9897593b0dfd69e4ac96016661bb6f0d30f", 861 | "sha256:b122f9ff2f2f6c1709dab289a05555be011c87828e911c0cf4074b85cb780a79" 862 | ], 863 | "markers": "python_version >= '3.7'", 864 | "version": "==5.5.0" 865 | }, 866 | "urllib3": { 867 | "hashes": [ 868 | "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e", 869 | "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997" 870 | ], 871 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'", 872 | "version": "==1.26.12" 873 | }, 874 | "verboselogs": { 875 | "hashes": [ 876 | "sha256:d63f23bf568295b95d3530c6864a0b580cec70e7ff974177dead1e4ffbc6ff49", 877 | "sha256:e33ddedcdfdafcb3a174701150430b11b46ceb64c2a9a26198c76a156568e427" 878 | ], 879 | "index": "pypi", 880 | "version": "==1.7" 881 | }, 882 | "wcwidth": { 883 | "hashes": [ 884 | "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", 885 | "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" 886 | ], 887 | "version": "==0.2.5" 888 | }, 889 | "webencodings": { 890 | "hashes": [ 891 | "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", 892 | "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" 893 | ], 894 | "version": "==0.5.1" 895 | }, 896 | "websocket-client": { 897 | "hashes": [ 898 | "sha256:d6b06432f184438d99ac1f456eaf22fe1ade524c3dd16e661142dc54e9cba574", 899 | "sha256:d6e8f90ca8e2dd4e8027c4561adeb9456b54044312dba655e7cae652ceb9ae59" 900 | ], 901 | "markers": "python_version >= '3.7'", 902 | "version": "==1.4.2" 903 | }, 904 | "zipp": { 905 | "hashes": [ 906 | "sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1", 907 | "sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8" 908 | ], 909 | "markers": "python_version >= '3.7'", 910 | "version": "==3.10.0" 911 | } 912 | }, 913 | "develop": {} 914 | } 915 | -------------------------------------------------------------------------------- /Worshop Python # 7: Ficheros/files.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Manejo de archivos" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "## import de librerias" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 1, 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "import io\n", 24 | "import os\n", 25 | "import struct\n", 26 | "import time" 27 | ] 28 | }, 29 | { 30 | "cell_type": "markdown", 31 | "metadata": {}, 32 | "source": [ 33 | "### Clase para el tratamiento de datos" 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": 2, 39 | "metadata": {}, 40 | "outputs": [], 41 | "source": [ 42 | "file_read: str = \"iris_df.csv\"\n", 43 | "file_bk: str = \"iris_bk.csv\"\n", 44 | "file_created: str = \"iris_created.csv\"\n", 45 | "iris_binary: str = \"iris_binary.bin\"\n", 46 | "iris_bk_test: str = \"iris_bk_test.csv\"\n", 47 | "\n", 48 | "os.remove(file_created)\n", 49 | "\n", 50 | "class IrisClass:\n", 51 | " def __init__(\n", 52 | " self,\n", 53 | " sepal_length: str,\n", 54 | " sepal_width: str,\n", 55 | " petal_length: str,\n", 56 | " petal_width: str,\n", 57 | " class_type: str\n", 58 | " ) -> None:\n", 59 | " self.sepal_length = float(sepal_length)\n", 60 | " self.sepal_width = float(sepal_width)\n", 61 | " self.petal_length = float(petal_length)\n", 62 | " self.petal_width = float(petal_width)\n", 63 | " self.class_type = class_type.replace(\"\\n\", \"\")\n", 64 | "\n", 65 | " def transform_class_type(self) -> str:\n", 66 | " mapper = {\n", 67 | " \"Iris-setosa\": 1,\n", 68 | " \"Iris-versicolor\": 2,\n", 69 | " \"Iris-virginica\": 3,\n", 70 | " }\n", 71 | " n_class_type = mapper[self.class_type]\n", 72 | "\n", 73 | " return (\n", 74 | " f'{self.sepal_length},'\n", 75 | " f'{self.sepal_width},'\n", 76 | " f'{self.petal_length},'\n", 77 | " f'{self.petal_width},'\n", 78 | " f'{n_class_type}'\n", 79 | " )\n", 80 | "\n", 81 | " def return_list_numbers(self) -> list:\n", 82 | " mapper = {\n", 83 | " \"Iris-setosa\": 1,\n", 84 | " \"Iris-versicolor\": 2,\n", 85 | " \"Iris-virginica\": 3,\n", 86 | " }\n", 87 | " n_class_type = mapper[self.class_type]\n", 88 | "\n", 89 | " return [\n", 90 | " self.sepal_length,\n", 91 | " self.sepal_width,\n", 92 | " self.petal_length,\n", 93 | " self.petal_width,\n", 94 | " n_class_type,\n", 95 | " ]\n", 96 | "\n", 97 | " def __str__(self) -> str:\n", 98 | " return (\n", 99 | " f'Class Flower: {self.class_type}\\n'\n", 100 | " f'Sepal Size: [{self.sepal_length}, {self.sepal_width}]\\n'\n", 101 | " f'Petal Size: [{self.petal_length}, {self.petal_width}]\\n'\n", 102 | " )\n", 103 | "\n", 104 | " def __repr__(self) -> str:\n", 105 | " return (\n", 106 | " f'Class Flower: {self.class_type}\\n'\n", 107 | " f'Sepal Length: {self.sepal_length}\\n'\n", 108 | " f'Sepal Width: {self.sepal_width}\\n'\n", 109 | " f'Petal Length: {self.petal_length}\\n'\n", 110 | " f'Petal Width: {self.petal_width}\\n'\n", 111 | " )" 112 | ] 113 | }, 114 | { 115 | "cell_type": "markdown", 116 | "metadata": {}, 117 | "source": [ 118 | "## Funciones para abrir archivos\n", 119 | "

\n", 120 | " Existen dos maneras de abrir los archivos:\n", 121 | "

    \n", 122 | "
  1. open y close de forma tradicional
  2. \n", 123 | "
  3. open usando contexto, en este no se usa close el mismo contexto lo aplica
  4. \n", 124 | "
\n", 125 | "

" 126 | ] 127 | }, 128 | { 129 | "cell_type": "markdown", 130 | "metadata": {}, 131 | "source": [ 132 | "### Forma tradicional" 133 | ] 134 | }, 135 | { 136 | "cell_type": "code", 137 | "execution_count": 3, 138 | "metadata": {}, 139 | "outputs": [ 140 | { 141 | "name": "stdout", 142 | "output_type": "stream", 143 | "text": [ 144 | "5.1,3.5,1.4,0.2,Iris-setosa\n", 145 | "4.9,3.0,1.4,0.2,Iris-setosa\n", 146 | "4.7,3.2,1.3,0.2,Iris-setosa\n", 147 | "4.6,3.1,1.5,0.2,Iris-setosa\n", 148 | "5.0,3.6,1.4,0.2,Iris-setosa\n" 149 | ] 150 | } 151 | ], 152 | "source": [ 153 | "f = open(file_read, \"r\", encoding=\"utf-8\")\n", 154 | "lines = 5\n", 155 | "count = 0\n", 156 | "\n", 157 | "for line in f:\n", 158 | " count += 1\n", 159 | " print(line.replace(\"\\n\", \"\"))\n", 160 | "\n", 161 | " if count == lines:\n", 162 | " break\n", 163 | "\n", 164 | "f.close()" 165 | ] 166 | }, 167 | { 168 | "cell_type": "markdown", 169 | "metadata": {}, 170 | "source": [ 171 | "### Usando open como contexto" 172 | ] 173 | }, 174 | { 175 | "cell_type": "code", 176 | "execution_count": 4, 177 | "metadata": {}, 178 | "outputs": [ 179 | { 180 | "name": "stdout", 181 | "output_type": "stream", 182 | "text": [ 183 | "5.1,3.5,1.4,0.2,Iris-setosa\n", 184 | "4.9,3.0,1.4,0.2,Iris-setosa\n", 185 | "4.7,3.2,1.3,0.2,Iris-setosa\n", 186 | "4.6,3.1,1.5,0.2,Iris-setosa\n", 187 | "5.0,3.6,1.4,0.2,Iris-setosa\n" 188 | ] 189 | } 190 | ], 191 | "source": [ 192 | "with open(file_read, \"r\", encoding=\"utf-8\") as f:\n", 193 | " lines = 5\n", 194 | " count = 0\n", 195 | "\n", 196 | " for line in f:\n", 197 | " count += 1\n", 198 | " print(line.replace(\"\\n\", \"\"))\n", 199 | "\n", 200 | " if count == lines:\n", 201 | " break" 202 | ] 203 | }, 204 | { 205 | "cell_type": "markdown", 206 | "metadata": {}, 207 | "source": [ 208 | "## Leyendo un archivo\n", 209 | "

\n", 210 | " Se pueden leer los archivos de dos formas:\n", 211 | "

    \n", 212 | "
  1. usando `readlines` para leer el archivo completo
  2. \n", 213 | "
  3. usando el `objeto File` como iterador para leer linea por linea
  4. \n", 214 | "
\n", 215 | "

" 216 | ] 217 | }, 218 | { 219 | "cell_type": "markdown", 220 | "metadata": {}, 221 | "source": [ 222 | "#### Todas las lineas" 223 | ] 224 | }, 225 | { 226 | "cell_type": "code", 227 | "execution_count": 5, 228 | "metadata": {}, 229 | "outputs": [ 230 | { 231 | "name": "stdout", 232 | "output_type": "stream", 233 | "text": [ 234 | "Muestra de lineas: ['5.1,3.5,1.4,0.2,Iris-setosa\\n', '4.9,3.0,1.4,0.2,Iris-setosa\\n', '4.7,3.2,1.3,0.2,Iris-setosa\\n', '4.6,3.1,1.5,0.2,Iris-setosa\\n', '5.0,3.6,1.4,0.2,Iris-setosa\\n']\n", 235 | "Numero de lineas en el archivo 151\n" 236 | ] 237 | } 238 | ], 239 | "source": [ 240 | "with open(file_read, \"r\", encoding=\"utf-8\") as f:\n", 241 | " all_lines = f.readlines()\n", 242 | " print(\"Muestra de lineas: \", all_lines[:5])\n", 243 | " print(\"Numero de lineas en el archivo\", len(all_lines))" 244 | ] 245 | }, 246 | { 247 | "cell_type": "markdown", 248 | "metadata": {}, 249 | "source": [ 250 | "### Linea por linea" 251 | ] 252 | }, 253 | { 254 | "cell_type": "code", 255 | "execution_count": 6, 256 | "metadata": {}, 257 | "outputs": [ 258 | { 259 | "name": "stdout", 260 | "output_type": "stream", 261 | "text": [ 262 | "['5.1,3.5,1.4,0.2,Iris-setosa\\n', '4.9,3.0,1.4,0.2,Iris-setosa\\n', '4.7,3.2,1.3,0.2,Iris-setosa\\n', '4.6,3.1,1.5,0.2,Iris-setosa\\n', '5.0,3.6,1.4,0.2,Iris-setosa\\n']\n", 263 | "151\n", 264 | "********************************************************************************\n", 265 | "['5.1,3.5,1.4,0.2,Iris-setosa\\n', '4.9,3.0,1.4,0.2,Iris-setosa\\n', '4.7,3.2,1.3,0.2,Iris-setosa\\n', '4.6,3.1,1.5,0.2,Iris-setosa\\n', '5.0,3.6,1.4,0.2,Iris-setosa\\n', '5.4,3.9,1.7,0.4,Iris-setosa\\n']\n" 266 | ] 267 | } 268 | ], 269 | "source": [ 270 | "num_read_lines = 5\n", 271 | "\n", 272 | "with open(file_read, \"r\", encoding=\"utf-8\") as f:\n", 273 | " # Leyendo todo el archivo usando el iterador\n", 274 | " other_lines = []\n", 275 | " all_lines = [line for line in f]\n", 276 | " print(all_lines[:5])\n", 277 | " print(len(all_lines))\n", 278 | " print(\"*\" * 80)\n", 279 | " # este metodo sirve para regresar el apuntador del archivo al principio\n", 280 | " f.seek(0)\n", 281 | "\n", 282 | " # leyendo solo 5 lineas del archivo\n", 283 | " for i, line in enumerate(f):\n", 284 | " other_lines.append(line)\n", 285 | "\n", 286 | " if i == num_read_lines:\n", 287 | " break\n", 288 | "\n", 289 | " print(other_lines)" 290 | ] 291 | }, 292 | { 293 | "cell_type": "markdown", 294 | "metadata": {}, 295 | "source": [ 296 | "## Escribiendo un archivo\n", 297 | "

\n", 298 | " Para escribir un archivo podemos hacer uso de estos 3 modos:\n", 299 | "

    \n", 300 | "
  1. `w` - sirve para crear el archivo, pero si existe lo borra
  2. \n", 301 | "
  3. `a` - sirve para agregar nuevos elementos al archivo
  4. \n", 302 | "
  5. `x` - sirve solo para crear el archivo, falla si el archivo existe
  6. \n", 303 | "
\n", 304 | "

\n", 305 | "\n", 306 | "

\n", 307 | " De igual manera para agregar texto al archivo se usa:\n", 308 | "

    \n", 309 | "
  1. `write` - se usa para escribir solo una linea en el archivo
  2. \n", 310 | "
  3. `writelines` - se usa para escribir multiples lineas (list) en el archivo
  4. \n", 311 | "
\n", 312 | "

" 313 | ] 314 | }, 315 | { 316 | "cell_type": "markdown", 317 | "metadata": {}, 318 | "source": [ 319 | "### Leyendo el archivo para reescrirlo" 320 | ] 321 | }, 322 | { 323 | "cell_type": "code", 324 | "execution_count": 7, 325 | "metadata": {}, 326 | "outputs": [ 327 | { 328 | "name": "stdout", 329 | "output_type": "stream", 330 | "text": [ 331 | "['5.1,3.5,1.4,0.2,Iris-setosa\\n', '4.9,3.0,1.4,0.2,Iris-setosa\\n', '4.7,3.2,1.3,0.2,Iris-setosa\\n', '4.6,3.1,1.5,0.2,Iris-setosa\\n', '5.0,3.6,1.4,0.2,Iris-setosa\\n']\n", 332 | "********************************************************************************\n", 333 | "[['5.1', '3.5', '1.4', '0.2', 'Iris-setosa\\n'], ['4.9', '3.0', '1.4', '0.2', 'Iris-setosa\\n'], ['4.7', '3.2', '1.3', '0.2', 'Iris-setosa\\n'], ['4.6', '3.1', '1.5', '0.2', 'Iris-setosa\\n'], ['5.0', '3.6', '1.4', '0.2', 'Iris-setosa\\n']]\n", 334 | "5\n", 335 | "Class Flower: Iris-setosa\n", 336 | "Sepal Size: [5.1, 3.5]\n", 337 | "Petal Size: [1.4, 0.2]\n", 338 | "\n" 339 | ] 340 | } 341 | ], 342 | "source": [ 343 | "with open(file_read, \"r\", encoding=\"utf-8\") as f:\n", 344 | " all_lines = f.readlines()\n", 345 | " print(all_lines[:5])\n", 346 | "\n", 347 | "print(\"*\" * 80)\n", 348 | "clean_lines = [line.split(\",\") for line in all_lines]\n", 349 | "print(clean_lines[:5])\n", 350 | "print(len(clean_lines[0]))\n", 351 | "# Creando clase para parseo\n", 352 | "iris_class = [\n", 353 | " IrisClass(line[0], line[1], line[2], line[3], line[4])\n", 354 | " for line in clean_lines\n", 355 | " if len(line) == 5\n", 356 | "]\n", 357 | "print(iris_class[0])" 358 | ] 359 | }, 360 | { 361 | "cell_type": "markdown", 362 | "metadata": {}, 363 | "source": [ 364 | "### Reescribiendo el archivo (cambiando el valor del tipo de Iris a numerico)" 365 | ] 366 | }, 367 | { 368 | "cell_type": "markdown", 369 | "metadata": {}, 370 | "source": [ 371 | "#### Usando `write`" 372 | ] 373 | }, 374 | { 375 | "cell_type": "code", 376 | "execution_count": 8, 377 | "metadata": {}, 378 | "outputs": [ 379 | { 380 | "name": "stdout", 381 | "output_type": "stream", 382 | "text": [ 383 | "Is not possible read file `not readable`\n" 384 | ] 385 | } 386 | ], 387 | "source": [ 388 | "with open(file_bk, \"w\", encoding=\"utf-8\") as f:\n", 389 | " try:\n", 390 | " f.readlines()\n", 391 | " except io.UnsupportedOperation as uo:\n", 392 | " print(\"Is not possible read file `%s`\" % str(uo))\n", 393 | "\n", 394 | " for iris in iris_class:\n", 395 | " f.write(iris.transform_class_type() + \"\\n\")" 396 | ] 397 | }, 398 | { 399 | "cell_type": "markdown", 400 | "metadata": {}, 401 | "source": [ 402 | "#### Usando `writelines`" 403 | ] 404 | }, 405 | { 406 | "cell_type": "code", 407 | "execution_count": 9, 408 | "metadata": {}, 409 | "outputs": [], 410 | "source": [ 411 | "with open(file_bk, \"w\", encoding=\"utf-8\") as f:\n", 412 | " all_lines_w = [iris.transform_class_type() + \"\\n\" for iris in iris_class]\n", 413 | " f.writelines(all_lines_w)" 414 | ] 415 | }, 416 | { 417 | "cell_type": "markdown", 418 | "metadata": {}, 419 | "source": [ 420 | "#### Usando `a` para agregar nuevas lineas" 421 | ] 422 | }, 423 | { 424 | "cell_type": "markdown", 425 | "metadata": {}, 426 | "source": [ 427 | "##### Usando `write`" 428 | ] 429 | }, 430 | { 431 | "cell_type": "code", 432 | "execution_count": 10, 433 | "metadata": {}, 434 | "outputs": [ 435 | { 436 | "name": "stdout", 437 | "output_type": "stream", 438 | "text": [ 439 | "Is not possible read file `not readable`\n" 440 | ] 441 | } 442 | ], 443 | "source": [ 444 | "with open(file_bk, \"a\", encoding=\"utf-8\") as f:\n", 445 | " try:\n", 446 | " f.readlines()\n", 447 | " except io.UnsupportedOperation as uo:\n", 448 | " print(\"Is not possible read file `%s`\" % str(uo))\n", 449 | "\n", 450 | " new_lines = [\n", 451 | " iris.transform_class_type() + \"\\n\" for iris in iris_class\n", 452 | " ][:5]\n", 453 | "\n", 454 | " for line in new_lines:\n", 455 | " f.write(line)" 456 | ] 457 | }, 458 | { 459 | "cell_type": "markdown", 460 | "metadata": {}, 461 | "source": [ 462 | "#### Usando `writelines`" 463 | ] 464 | }, 465 | { 466 | "cell_type": "code", 467 | "execution_count": 11, 468 | "metadata": {}, 469 | "outputs": [], 470 | "source": [ 471 | "with open(file_bk, \"a\", encoding=\"utf-8\") as f:\n", 472 | " new_lines = [\n", 473 | " iris.transform_class_type() + \"\\n\" for iris in iris_class\n", 474 | " ][:5]\n", 475 | "\n", 476 | " f.writelines(new_lines)" 477 | ] 478 | }, 479 | { 480 | "cell_type": "markdown", 481 | "metadata": {}, 482 | "source": [ 483 | "#### Usando `x`" 484 | ] 485 | }, 486 | { 487 | "cell_type": "code", 488 | "execution_count": 12, 489 | "metadata": {}, 490 | "outputs": [], 491 | "source": [ 492 | "with open(file_created, \"x\", encoding=\"utf-8\") as f:\n", 493 | " new_lines = [\n", 494 | " iris.transform_class_type() + \"\\n\" for iris in iris_class\n", 495 | " ][:5]\n", 496 | "\n", 497 | " f.writelines(new_lines)\n", 498 | "\n", 499 | " for line in new_lines:\n", 500 | " f.write(line)" 501 | ] 502 | }, 503 | { 504 | "cell_type": "code", 505 | "execution_count": 13, 506 | "metadata": {}, 507 | "outputs": [ 508 | { 509 | "name": "stdout", 510 | "output_type": "stream", 511 | "text": [ 512 | "[Errno 17] File exists: 'iris_created.csv'\n" 513 | ] 514 | } 515 | ], 516 | "source": [ 517 | "try:\n", 518 | " with open(file_created, \"x\", encoding=\"utf-8\") as f:\n", 519 | " new_lines = [\n", 520 | " iris.transform_class_type() + \"\\n\" for iris in iris_class\n", 521 | " ][:5]\n", 522 | "\n", 523 | " f.writelines(new_lines)\n", 524 | "except FileExistsError as fee:\n", 525 | " print(fee)" 526 | ] 527 | }, 528 | { 529 | "cell_type": "markdown", 530 | "metadata": {}, 531 | "source": [ 532 | "### Creando y leyendo un archivo binario\n", 533 | "\n", 534 | "

\n", 535 | " Para este ejemplo se usa el mismo dataset, debido a que se usan numeros de punto flotante\n", 536 | " se debe de hacer un empaquetado con la libreria `struct` nativa de python.\n", 537 | "

\n", 538 | "

\n", 539 | " Para la parte de leer se tiene que hacer el proceso inverso, en este caso por ser de\n", 540 | " tipo flotante se debe declarar un buffer de 4 bytes:\n", 541 | " https://docs.python.org/3/library/struct.html#format-characters\n", 542 | "

" 543 | ] 544 | }, 545 | { 546 | "cell_type": "code", 547 | "execution_count": 14, 548 | "metadata": {}, 549 | "outputs": [], 550 | "source": [ 551 | "with open(iris_binary, \"wb\") as f:\n", 552 | " new_lines = [\n", 553 | " struct.pack(\n", 554 | " '%sf' % len(iris.return_list_numbers()),\n", 555 | " *iris.return_list_numbers(),\n", 556 | " )\n", 557 | " for iris in iris_class\n", 558 | " ]\n", 559 | "\n", 560 | " f.writelines(new_lines)" 561 | ] 562 | }, 563 | { 564 | "cell_type": "code", 565 | "execution_count": 15, 566 | "metadata": {}, 567 | "outputs": [ 568 | { 569 | "name": "stdout", 570 | "output_type": "stream", 571 | "text": [ 572 | "[[5.099999904632568, 3.5, 1.399999976158142, 0.20000000298023224, 1.0], [4.900000095367432, 3.0, 1.399999976158142, 0.20000000298023224, 1.0], [4.699999809265137, 3.200000047683716, 1.2999999523162842, 0.20000000298023224, 1.0], [4.599999904632568, 3.0999999046325684, 1.5, 0.20000000298023224, 1.0], [5.0, 3.5999999046325684, 1.399999976158142, 0.20000000298023224, 1.0]]\n" 573 | ] 574 | } 575 | ], 576 | "source": [ 577 | "with open(iris_binary, \"rb\") as f:\n", 578 | " array_complete = []\n", 579 | " simple_array = []\n", 580 | "\n", 581 | " while (buff := f.read(4)):\n", 582 | " simple_array.append(struct.unpack(\"f\", buff)[0])\n", 583 | "\n", 584 | " if len(simple_array) == 5:\n", 585 | " array_complete.append(simple_array)\n", 586 | " simple_array = []\n", 587 | "\n", 588 | "print(array_complete[:5])" 589 | ] 590 | }, 591 | { 592 | "cell_type": "markdown", 593 | "metadata": {}, 594 | "source": [ 595 | "#### usando `+`" 596 | ] 597 | }, 598 | { 599 | "cell_type": "markdown", 600 | "metadata": {}, 601 | "source": [ 602 | "#### Escribiendo el archivo" 603 | ] 604 | }, 605 | { 606 | "cell_type": "code", 607 | "execution_count": 16, 608 | "metadata": {}, 609 | "outputs": [ 610 | { 611 | "name": "stdout", 612 | "output_type": "stream", 613 | "text": [ 614 | "********************************************************************************\n", 615 | "[]\n", 616 | "********************************************************************************\n", 617 | "********************************************************************************\n", 618 | "['5.1,3.5,1.4,0.2,1\\n', '4.9,3.0,1.4,0.2,1\\n', '4.7,3.2,1.3,0.2,1\\n', '4.6,3.1,1.5,0.2,1\\n', '5.0,3.6,1.4,0.2,1\\n']\n", 619 | "********************************************************************************\n" 620 | ] 621 | } 622 | ], 623 | "source": [ 624 | "with open(iris_bk_test, \"w+\") as f:\n", 625 | " lines = f.readlines()\n", 626 | " print(\"*\" * 80)\n", 627 | " print(lines)\n", 628 | " print(\"*\" * 80)\n", 629 | " new_lines = [\n", 630 | " iris.transform_class_type() + \"\\n\" for iris in iris_class\n", 631 | " ]\n", 632 | " time.sleep(20)\n", 633 | " f.writelines(new_lines)\n", 634 | " f.seek(0)\n", 635 | " lines = f.readlines()\n", 636 | " print(\"*\" * 80)\n", 637 | " print(lines[:5])\n", 638 | " print(\"*\" * 80)" 639 | ] 640 | }, 641 | { 642 | "cell_type": "markdown", 643 | "metadata": {}, 644 | "source": [ 645 | "#### Leyendo el archivo" 646 | ] 647 | }, 648 | { 649 | "cell_type": "code", 650 | "execution_count": 17, 651 | "metadata": {}, 652 | "outputs": [ 653 | { 654 | "name": "stdout", 655 | "output_type": "stream", 656 | "text": [ 657 | "['5.1,3.5,1.4,0.2,1\\n', '4.9,3.0,1.4,0.2,1\\n', '4.7,3.2,1.3,0.2,1\\n', '4.6,3.1,1.5,0.2,1\\n', '5.0,3.6,1.4,0.2,1\\n']\n" 658 | ] 659 | } 660 | ], 661 | "source": [ 662 | "with open(iris_bk_test, \"r+\") as f:\n", 663 | " lines = f.readlines()\n", 664 | " print(lines[:5])\n", 665 | " f.writelines(lines[:5])" 666 | ] 667 | } 668 | ], 669 | "metadata": { 670 | "kernelspec": { 671 | "display_name": "Python 3 (ipykernel)", 672 | "language": "python", 673 | "name": "python3" 674 | }, 675 | "language_info": { 676 | "codemirror_mode": { 677 | "name": "ipython", 678 | "version": 3 679 | }, 680 | "file_extension": ".py", 681 | "mimetype": "text/x-python", 682 | "name": "python", 683 | "nbconvert_exporter": "python", 684 | "pygments_lexer": "ipython3", 685 | "version": "3.9.13" 686 | }, 687 | "vscode": { 688 | "interpreter": { 689 | "hash": "4ae1d9573f36c5ea85e81284a590ce02170bd3f6f3d77e6fc9900e8410b6db09" 690 | } 691 | } 692 | }, 693 | "nbformat": 4, 694 | "nbformat_minor": 4 695 | } 696 | -------------------------------------------------------------------------------- /Worshop Python # 7: Ficheros/iris_df.csv: -------------------------------------------------------------------------------- 1 | 5.1,3.5,1.4,0.2,Iris-setosa 2 | 4.9,3.0,1.4,0.2,Iris-setosa 3 | 4.7,3.2,1.3,0.2,Iris-setosa 4 | 4.6,3.1,1.5,0.2,Iris-setosa 5 | 5.0,3.6,1.4,0.2,Iris-setosa 6 | 5.4,3.9,1.7,0.4,Iris-setosa 7 | 4.6,3.4,1.4,0.3,Iris-setosa 8 | 5.0,3.4,1.5,0.2,Iris-setosa 9 | 4.4,2.9,1.4,0.2,Iris-setosa 10 | 4.9,3.1,1.5,0.1,Iris-setosa 11 | 5.4,3.7,1.5,0.2,Iris-setosa 12 | 4.8,3.4,1.6,0.2,Iris-setosa 13 | 4.8,3.0,1.4,0.1,Iris-setosa 14 | 4.3,3.0,1.1,0.1,Iris-setosa 15 | 5.8,4.0,1.2,0.2,Iris-setosa 16 | 5.7,4.4,1.5,0.4,Iris-setosa 17 | 5.4,3.9,1.3,0.4,Iris-setosa 18 | 5.1,3.5,1.4,0.3,Iris-setosa 19 | 5.7,3.8,1.7,0.3,Iris-setosa 20 | 5.1,3.8,1.5,0.3,Iris-setosa 21 | 5.4,3.4,1.7,0.2,Iris-setosa 22 | 5.1,3.7,1.5,0.4,Iris-setosa 23 | 4.6,3.6,1.0,0.2,Iris-setosa 24 | 5.1,3.3,1.7,0.5,Iris-setosa 25 | 4.8,3.4,1.9,0.2,Iris-setosa 26 | 5.0,3.0,1.6,0.2,Iris-setosa 27 | 5.0,3.4,1.6,0.4,Iris-setosa 28 | 5.2,3.5,1.5,0.2,Iris-setosa 29 | 5.2,3.4,1.4,0.2,Iris-setosa 30 | 4.7,3.2,1.6,0.2,Iris-setosa 31 | 4.8,3.1,1.6,0.2,Iris-setosa 32 | 5.4,3.4,1.5,0.4,Iris-setosa 33 | 5.2,4.1,1.5,0.1,Iris-setosa 34 | 5.5,4.2,1.4,0.2,Iris-setosa 35 | 4.9,3.1,1.5,0.1,Iris-setosa 36 | 5.0,3.2,1.2,0.2,Iris-setosa 37 | 5.5,3.5,1.3,0.2,Iris-setosa 38 | 4.9,3.1,1.5,0.1,Iris-setosa 39 | 4.4,3.0,1.3,0.2,Iris-setosa 40 | 5.1,3.4,1.5,0.2,Iris-setosa 41 | 5.0,3.5,1.3,0.3,Iris-setosa 42 | 4.5,2.3,1.3,0.3,Iris-setosa 43 | 4.4,3.2,1.3,0.2,Iris-setosa 44 | 5.0,3.5,1.6,0.6,Iris-setosa 45 | 5.1,3.8,1.9,0.4,Iris-setosa 46 | 4.8,3.0,1.4,0.3,Iris-setosa 47 | 5.1,3.8,1.6,0.2,Iris-setosa 48 | 4.6,3.2,1.4,0.2,Iris-setosa 49 | 5.3,3.7,1.5,0.2,Iris-setosa 50 | 5.0,3.3,1.4,0.2,Iris-setosa 51 | 7.0,3.2,4.7,1.4,Iris-versicolor 52 | 6.4,3.2,4.5,1.5,Iris-versicolor 53 | 6.9,3.1,4.9,1.5,Iris-versicolor 54 | 5.5,2.3,4.0,1.3,Iris-versicolor 55 | 6.5,2.8,4.6,1.5,Iris-versicolor 56 | 5.7,2.8,4.5,1.3,Iris-versicolor 57 | 6.3,3.3,4.7,1.6,Iris-versicolor 58 | 4.9,2.4,3.3,1.0,Iris-versicolor 59 | 6.6,2.9,4.6,1.3,Iris-versicolor 60 | 5.2,2.7,3.9,1.4,Iris-versicolor 61 | 5.0,2.0,3.5,1.0,Iris-versicolor 62 | 5.9,3.0,4.2,1.5,Iris-versicolor 63 | 6.0,2.2,4.0,1.0,Iris-versicolor 64 | 6.1,2.9,4.7,1.4,Iris-versicolor 65 | 5.6,2.9,3.6,1.3,Iris-versicolor 66 | 6.7,3.1,4.4,1.4,Iris-versicolor 67 | 5.6,3.0,4.5,1.5,Iris-versicolor 68 | 5.8,2.7,4.1,1.0,Iris-versicolor 69 | 6.2,2.2,4.5,1.5,Iris-versicolor 70 | 5.6,2.5,3.9,1.1,Iris-versicolor 71 | 5.9,3.2,4.8,1.8,Iris-versicolor 72 | 6.1,2.8,4.0,1.3,Iris-versicolor 73 | 6.3,2.5,4.9,1.5,Iris-versicolor 74 | 6.1,2.8,4.7,1.2,Iris-versicolor 75 | 6.4,2.9,4.3,1.3,Iris-versicolor 76 | 6.6,3.0,4.4,1.4,Iris-versicolor 77 | 6.8,2.8,4.8,1.4,Iris-versicolor 78 | 6.7,3.0,5.0,1.7,Iris-versicolor 79 | 6.0,2.9,4.5,1.5,Iris-versicolor 80 | 5.7,2.6,3.5,1.0,Iris-versicolor 81 | 5.5,2.4,3.8,1.1,Iris-versicolor 82 | 5.5,2.4,3.7,1.0,Iris-versicolor 83 | 5.8,2.7,3.9,1.2,Iris-versicolor 84 | 6.0,2.7,5.1,1.6,Iris-versicolor 85 | 5.4,3.0,4.5,1.5,Iris-versicolor 86 | 6.0,3.4,4.5,1.6,Iris-versicolor 87 | 6.7,3.1,4.7,1.5,Iris-versicolor 88 | 6.3,2.3,4.4,1.3,Iris-versicolor 89 | 5.6,3.0,4.1,1.3,Iris-versicolor 90 | 5.5,2.5,4.0,1.3,Iris-versicolor 91 | 5.5,2.6,4.4,1.2,Iris-versicolor 92 | 6.1,3.0,4.6,1.4,Iris-versicolor 93 | 5.8,2.6,4.0,1.2,Iris-versicolor 94 | 5.0,2.3,3.3,1.0,Iris-versicolor 95 | 5.6,2.7,4.2,1.3,Iris-versicolor 96 | 5.7,3.0,4.2,1.2,Iris-versicolor 97 | 5.7,2.9,4.2,1.3,Iris-versicolor 98 | 6.2,2.9,4.3,1.3,Iris-versicolor 99 | 5.1,2.5,3.0,1.1,Iris-versicolor 100 | 5.7,2.8,4.1,1.3,Iris-versicolor 101 | 6.3,3.3,6.0,2.5,Iris-virginica 102 | 5.8,2.7,5.1,1.9,Iris-virginica 103 | 7.1,3.0,5.9,2.1,Iris-virginica 104 | 6.3,2.9,5.6,1.8,Iris-virginica 105 | 6.5,3.0,5.8,2.2,Iris-virginica 106 | 7.6,3.0,6.6,2.1,Iris-virginica 107 | 4.9,2.5,4.5,1.7,Iris-virginica 108 | 7.3,2.9,6.3,1.8,Iris-virginica 109 | 6.7,2.5,5.8,1.8,Iris-virginica 110 | 7.2,3.6,6.1,2.5,Iris-virginica 111 | 6.5,3.2,5.1,2.0,Iris-virginica 112 | 6.4,2.7,5.3,1.9,Iris-virginica 113 | 6.8,3.0,5.5,2.1,Iris-virginica 114 | 5.7,2.5,5.0,2.0,Iris-virginica 115 | 5.8,2.8,5.1,2.4,Iris-virginica 116 | 6.4,3.2,5.3,2.3,Iris-virginica 117 | 6.5,3.0,5.5,1.8,Iris-virginica 118 | 7.7,3.8,6.7,2.2,Iris-virginica 119 | 7.7,2.6,6.9,2.3,Iris-virginica 120 | 6.0,2.2,5.0,1.5,Iris-virginica 121 | 6.9,3.2,5.7,2.3,Iris-virginica 122 | 5.6,2.8,4.9,2.0,Iris-virginica 123 | 7.7,2.8,6.7,2.0,Iris-virginica 124 | 6.3,2.7,4.9,1.8,Iris-virginica 125 | 6.7,3.3,5.7,2.1,Iris-virginica 126 | 7.2,3.2,6.0,1.8,Iris-virginica 127 | 6.2,2.8,4.8,1.8,Iris-virginica 128 | 6.1,3.0,4.9,1.8,Iris-virginica 129 | 6.4,2.8,5.6,2.1,Iris-virginica 130 | 7.2,3.0,5.8,1.6,Iris-virginica 131 | 7.4,2.8,6.1,1.9,Iris-virginica 132 | 7.9,3.8,6.4,2.0,Iris-virginica 133 | 6.4,2.8,5.6,2.2,Iris-virginica 134 | 6.3,2.8,5.1,1.5,Iris-virginica 135 | 6.1,2.6,5.6,1.4,Iris-virginica 136 | 7.7,3.0,6.1,2.3,Iris-virginica 137 | 6.3,3.4,5.6,2.4,Iris-virginica 138 | 6.4,3.1,5.5,1.8,Iris-virginica 139 | 6.0,3.0,4.8,1.8,Iris-virginica 140 | 6.9,3.1,5.4,2.1,Iris-virginica 141 | 6.7,3.1,5.6,2.4,Iris-virginica 142 | 6.9,3.1,5.1,2.3,Iris-virginica 143 | 5.8,2.7,5.1,1.9,Iris-virginica 144 | 6.8,3.2,5.9,2.3,Iris-virginica 145 | 6.7,3.3,5.7,2.5,Iris-virginica 146 | 6.7,3.0,5.2,2.3,Iris-virginica 147 | 6.3,2.5,5.0,1.9,Iris-virginica 148 | 6.5,3.0,5.2,2.0,Iris-virginica 149 | 6.2,3.4,5.4,2.3,Iris-virginica 150 | 5.9,3.0,5.1,1.8,Iris-virginica 151 | 152 | -------------------------------------------------------------------------------- /Worshop Python # 8: Numpy/Ejercicio_python.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [] 7 | }, 8 | "kernelspec": { 9 | "name": "python3", 10 | "display_name": "Python 3" 11 | }, 12 | "language_info": { 13 | "name": "python" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "markdown", 19 | "source": [ 20 | "# **Puntos por goles en campeonato**\n", 21 | "\n", 22 | "\n" 23 | ], 24 | "metadata": { 25 | "id": "58YITPpzw389" 26 | } 27 | }, 28 | { 29 | "cell_type": "markdown", 30 | "source": [ 31 | "Cada equipo juega contra todos los demás equipos y los goles anotados en cada encuentro han sido almacenados en una matriz nxn como se indica en la tabla ejemplo:\n" 32 | ], 33 | "metadata": { 34 | "id": "XAMhUNpvxDat" 35 | } 36 | }, 37 | { 38 | "cell_type": "markdown", 39 | "source": [ 40 | "![foto enunciado.jpeg](data:image/jpeg;base64,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WtPca/VHzNxc4KAAv/mSvLtadv1cIeZK8u1p2/Vwh0da09xr9UfM3Fzgq9n+ttE/MY3zUjqEaUoOiG7KXXKdU5C4Kmoktl9ZIeM1GlCyUZFikixwL+o3Lr3e5ve9HENgeRzQOktA4HE29JWZt1VVxMRPljJNw1FVETtQmAQ693ub3vRxBr3e5ve9HELjSUwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwCHXu9ze96OINe73N73o4gEwD5Qo1JJSkGgz/keGJe4fQAAAAAAAKrpR9Ran/Z+cgaBG8tNMaoTdF1ww6RU+TZz8ZLUWbqUvbM6pxJId1auheVRkrKfQeGBj8v61c1x0DSVbtvaPfKErt0XwuvyYVZh1rWRKGlzWGk0G0tRIQnpUgm2tYajLFo21E2lQdnAAAAAAAAAADpO0/Vajfl8f5aRzYOk7T9VqN+Xx/lpAZUBx3blRrWk/wAle6fKo5+X5R7sks126aSzFuaQUKkpp77xRIKYacsN9jVw20O61hSndY8pRkaiy9RaOLu84Gjy1785P2DnJRYVX2TW63Z9oYQ7q8+VOfLnwzZSxwxwL7gFiAAAAAAAAAAABhbwo9er1BdpdtXbJtme69HUVTjRGJLzTKX0KeQhD6VNZnGkuNkpSVEg1krKrLgYZoBoi2Cbtbyk0WFo8u24q5Sm7ZekXlTavcM6qsUWRrWjprrbson1NyX0uSiOPr2yWy2l004to1m9wAAAAAAAAAAA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)" 41 | ], 42 | "metadata": { 43 | "id": "tkiWaTplxIEc" 44 | } 45 | }, 46 | { 47 | "cell_type": "markdown", 48 | "source": [ 49 | "El equipo 1 marco 3 goles al equipo 2,1 gol al equipo 3, etc.\n", 50 | "\n", 51 | "El equipo 2 marco 1 gol al equipo 1,3 goles al equipo 3, etc.\n", 52 | "\n", 53 | "Lea la matriz y determine cuantos puntos tiene cada equipo. Los puntos asignados son: empate 1, triunfo 3 , derrota 0.\n", 54 | "\n", 55 | "Se adjunta la matriz en python para el ejercicio en forma de un arreglo de 5×5:" 56 | ], 57 | "metadata": { 58 | "id": "Jy-xFnBjxqwN" 59 | } 60 | }, 61 | { 62 | "cell_type": "code", 63 | "source": [ 64 | "import numpy as np" 65 | ], 66 | "metadata": { 67 | "id": "CeU8VYcox_Se" 68 | }, 69 | "execution_count": null, 70 | "outputs": [] 71 | }, 72 | { 73 | "cell_type": "code", 74 | "source": [ 75 | "goles = np.array(\n", 76 | " [[0, 3, 1, 2, 1],\n", 77 | " [1, 0, 3, 2, 3],\n", 78 | " [0, 2, 0, 1, 1],\n", 79 | " [1, 0, 2, 0, 1],\n", 80 | " [3, 4, 1, 2, 0]] )\n", 81 | "#indices son los equipos " 82 | ], 83 | "metadata": { 84 | "id": "pyAOlWiYyFhO" 85 | }, 86 | "execution_count": null, 87 | "outputs": [] 88 | }, 89 | { 90 | "cell_type": "code", 91 | "source": [ 92 | "tamano = np.shape(goles)#devuelve una tupla con los elementos por eje en este caso los equipos\n", 93 | "n = tamano[0]#tamano en la filas \n", 94 | "m = tamano[1]#tamano en las columnas \n", 95 | "triunfos = np.zeros(shape=(n,m),dtype=int)#se crea un array de ceros del mismo tamano \n", 96 | "ttriunfos = np.zeros(n,dtype=int)#se crea un arreglo de una dimension de la cantidad de equipos " 97 | ], 98 | "metadata": { 99 | "id": "7lbFuZM8ycVe" 100 | }, 101 | "execution_count": null, 102 | "outputs": [] 103 | }, 104 | { 105 | "cell_type": "code", 106 | "source": [ 107 | "#calculamos los triunfos\n", 108 | "i = 0\n", 109 | "while not(i>=n):#mientras i no sea igual o mayor al tamano de las filas \n", 110 | " j = 0\n", 111 | " while not(j>=m):#mientras que j no sea igual al tamano de las columnas \n", 112 | " if (goles[i,j] > goles[j,i]):#estamos comparando los partidos y llenando nuestra matriz de 0\n", 113 | " triunfos[i,j] = 1\n", 114 | " triunfos[j,i] = 0\n", 115 | " j = j + 1\n", 116 | " i = i + 1" 117 | ], 118 | "metadata": { 119 | "id": "ixs263ASylM_" 120 | }, 121 | "execution_count": null, 122 | "outputs": [] 123 | }, 124 | { 125 | "cell_type": "code", 126 | "source": [ 127 | "#calculamos total de triunfos \n", 128 | "i = 0\n", 129 | "while not(i>=n):#mientras i no sea igual o mayor al tamano de las filas \n", 130 | " j = 0\n", 131 | " while not(j>=m):#mientras que j no sea igual al tamano de las columnas \n", 132 | " ttriunfos[i] = ttriunfos[i] + triunfos[i,j]#calcula el total de triunfos por equipo\n", 133 | " j = j + 1\n", 134 | " i = i + 1" 135 | ], 136 | "metadata": { 137 | "id": "9ldPkXTAy_gf" 138 | }, 139 | "execution_count": null, 140 | "outputs": [] 141 | }, 142 | { 143 | "cell_type": "code", 144 | "source": [ 145 | "#calculamos empates\n", 146 | "empates = np.zeros(shape=(n,m),dtype=int)#creamos una matriz de ceros donde llenarermos los empates\n", 147 | "tempates = np.zeros(n,dtype=int)#calculamos un arreglo de una dimension con la cantidad de equipos \n", 148 | "i = 0\n", 149 | "while not(i>=n):#mientras i no sea igual o mayor al tamano de las filas \n", 150 | " j = 0\n", 151 | " while not(j>=m):#mientras que j no sea igual al tamano de las columnas \n", 152 | " if (goles[i,j] == goles[j,i]) and (i!=j):#verificamos en la matriz de goles si en un partido jugado tienen el mismo resultado\n", 153 | " empates[i,j] = 1#llenan la matriz de empates\n", 154 | " empates[j,i] = 1\n", 155 | " j = j + 1\n", 156 | " i = i + 1" 157 | ], 158 | "metadata": { 159 | "id": "52PKXqcYzC72" 160 | }, 161 | "execution_count": null, 162 | "outputs": [] 163 | }, 164 | { 165 | "cell_type": "code", 166 | "source": [ 167 | "#calculamos total de empates\n", 168 | "i = 0\n", 169 | "while not(i>=n):\n", 170 | " j = 0\n", 171 | " while not(j>=m):\n", 172 | " tempates[i] = tempates[i] + empates[i,j]#calculan el total de empates por equipo \n", 173 | " j = j + 1\n", 174 | " i = i + 1\n" 175 | ], 176 | "metadata": { 177 | "id": "MruEjtb7zMLV" 178 | }, 179 | "execution_count": null, 180 | "outputs": [] 181 | }, 182 | { 183 | "cell_type": "code", 184 | "source": [ 185 | "#calculamos las derrotas\n", 186 | "#como van a tener 4 partidos colocamos la cantidad de equipos menos 1 que seria la cantidad de partidos jugados\n", 187 | "#le restamos los trienfos y empates obtenidos y obtenemos el total de derrotas \n", 188 | "derrotas = (n-1)*np.ones(n,dtype=int)\n", 189 | "derrotas = derrotas - ttriunfos - tempates" 190 | ], 191 | "metadata": { 192 | "id": "wI-5MVTrzSV9" 193 | }, 194 | "execution_count": null, 195 | "outputs": [] 196 | }, 197 | { 198 | "cell_type": "code", 199 | "source": [ 200 | "#calculamos puntos totales\n", 201 | "puntos_triunfos = ttriunfos*3\n", 202 | "puntos_empates = tempates*1\n", 203 | "puntos = puntos_triunfos+puntos_empates \n" 204 | ], 205 | "metadata": { 206 | "id": "VGBKE_b5zZdG" 207 | }, 208 | "execution_count": null, 209 | "outputs": [] 210 | }, 211 | { 212 | "cell_type": "code", 213 | "source": [ 214 | "print(triunfos)\n", 215 | "print(' triunfos por equipo: ')\n", 216 | "print(ttriunfos)\n", 217 | "print(' empates por equipo:')\n", 218 | "print(tempates)\n", 219 | "print(' derrotas por equipo:')\n", 220 | "print(derrotas)\n", 221 | "print('puntos por equipo:')\n", 222 | "print(puntos)" 223 | ], 224 | "metadata": { 225 | "colab": { 226 | "base_uri": "https://localhost:8080/" 227 | }, 228 | "id": "L5EEix2hzc4I", 229 | "outputId": "8b968d02-8517-43aa-99a6-0bed90402a6f" 230 | }, 231 | "execution_count": null, 232 | "outputs": [ 233 | { 234 | "output_type": "stream", 235 | "name": "stdout", 236 | "text": [ 237 | "[[0 1 1 1 0]\n", 238 | " [0 0 1 1 0]\n", 239 | " [0 0 0 0 0]\n", 240 | " [0 0 1 0 0]\n", 241 | " [1 1 0 1 0]]\n", 242 | " triunfos por equipo: \n", 243 | "[3 2 0 1 3]\n", 244 | " empates por equipo:\n", 245 | "[0 0 1 0 1]\n", 246 | " derrotas por equipo:\n", 247 | "[1 2 3 3 0]\n", 248 | "puntos por equipo:\n", 249 | "[ 9 6 1 3 10]\n" 250 | ] 251 | } 252 | ] 253 | }, 254 | { 255 | "cell_type": "markdown", 256 | "source": [ 257 | "# **crear una funcion que dada un array de una dimension ,hacer un resumen estadistico de las edades ,verificar que el array sea de una dimension caso contrario entregar error.**" 258 | ], 259 | "metadata": { 260 | "id": "lvPD-vOYfcu0" 261 | } 262 | }, 263 | { 264 | "cell_type": "code", 265 | "source": [ 266 | "def get_array_info(input_array):\n", 267 | " if input_array.ndim > 1:\n", 268 | " print(\"ERROR, EL ARRAY NO DEBE TENER MAS DE UNA DIMENSION \")\n", 269 | " else :\n", 270 | " print(f\"cantidad de elementos del array {input_array.shape[0]}\")\n", 271 | " print(f\"tipo de dato de los elementos del array {input_array.dtype}\")\n", 272 | " print(f\"Valor minimo: {input_array.min()}\")\n", 273 | " print(f\"Valor maximo: {input_array.max()}\")\n", 274 | " print(f\"valor promedio : {input_array.mean()}\")\n", 275 | " print(f\"suma de los valores : {input_array.sum()}\")\n" 276 | ], 277 | "metadata": { 278 | "id": "186B9nsufnRt" 279 | }, 280 | "execution_count": null, 281 | "outputs": [] 282 | }, 283 | { 284 | "cell_type": "code", 285 | "source": [ 286 | "new_array= np.array([16,25,19,58,22])\n", 287 | "get_array_info(new_array)" 288 | ], 289 | "metadata": { 290 | "id": "DX-nzh4Nfy1q" 291 | }, 292 | "execution_count": null, 293 | "outputs": [] 294 | }, 295 | { 296 | "cell_type": "markdown", 297 | "source": [ 298 | "# **dado un array de dos dimensiones, el valor total de las filas o valor total de las columnas**" 299 | ], 300 | "metadata": { 301 | "id": "pFufHWlef2bb" 302 | } 303 | }, 304 | { 305 | "cell_type": "code", 306 | "source": [ 307 | "def array_sum(input_array):\n", 308 | " if input_array.ndim != 2:\n", 309 | " print(\"ERROR: El Array debe tener 2 Dimensiones.\")\n", 310 | " else:\n", 311 | " # Variables para almacenar los índices:\n", 312 | " row_index = 0\n", 313 | " col_index = 0\n", 314 | " # Arrays con las sumas de las filas y las columnas:\n", 315 | " row_sum = input_array.sum(axis=1)\n", 316 | " col_sum = input_array.sum(axis=0)\n", 317 | " # Itero el array de suma de filas, para imprimir los valores:\n", 318 | " \n", 319 | " for value in row_sum:\n", 320 | " print(f\"Total Fila {row_index}: {value}\")\n", 321 | " row_index += 1\n", 322 | " # Itero el array de suma de columnas, para imprimir los valores:\n", 323 | " for value in col_sum:\n", 324 | " print(f\"Total Columna {col_index}: {value}\")\n", 325 | " col_index += 1" 326 | ], 327 | "metadata": { 328 | "id": "Sc-dLasVgTFK" 329 | }, 330 | "execution_count": null, 331 | "outputs": [] 332 | }, 333 | { 334 | "cell_type": "code", 335 | "source": [ 336 | "my_array_2D = np.array([[1, 2, 3],\n", 337 | " [4, 5, 6],\n", 338 | " [7, 8, 9]])\n", 339 | "array_sum(my_array_2D)" 340 | ], 341 | "metadata": { 342 | "id": "-Eg3JoosgVAJ" 343 | }, 344 | "execution_count": null, 345 | "outputs": [] 346 | }, 347 | { 348 | "cell_type": "code", 349 | "source": [ 350 | "# np.all()\n", 351 | "# Retorna True si todos los elementos del arreglo cumplen con la condición.\n", 352 | "# np.any()\n", 353 | "# Retorna True si almenos uno de los elementos del arreglo cumple con la condición.\n", 354 | "# np.where()\n", 355 | "# Retorna un arreglo con los índices de los elementos que cumplen con la condición." 356 | ], 357 | "metadata": { 358 | "id": "Aduw1xaDgVFq" 359 | }, 360 | "execution_count": null, 361 | "outputs": [] 362 | }, 363 | { 364 | "cell_type": "code", 365 | "source": [ 366 | "# new_array=np.array([[12,56,15,45,56],[20,506,25,45,65]])\n", 367 | "# print(new_array)\n", 368 | "# print(np.all(new_array==12))\n", 369 | "# print(np.any(new_array<20))\n", 370 | "# fila,columna=np.where(new_array>50)\n", 371 | "# print(fila,columna)\n", 372 | "# dic_posiciones={}\n", 373 | "# contador=0\n", 374 | "# new_data=list(zip(fila,columna))\n", 375 | "# for values in new_data:\n", 376 | "# dic_posiciones[f\"posicion {contador}\"]=new_array[values]\n", 377 | "# contador+=1\n", 378 | "# print(dic_posiciones)\n", 379 | "# def metricaPais(ddatos,dpaises):\n", 380 | "# d_PromediosMetricasPais = {}\n", 381 | "# for pais, ciudades in dpaises.items():\n", 382 | "\n", 383 | "# \t\tfor datos,valores in ddatos.items():\t\t\t\t\t\t\n", 384 | "# \t\t\tif datos[0] in ciudades :\n", 385 | "# \t\t\t\td_PromediosMetricasPais[(pais,datos[1])]+=valores " 386 | ], 387 | "metadata": { 388 | "id": "Onyfv6s1gcnr" 389 | }, 390 | "execution_count": null, 391 | "outputs": [] 392 | }, 393 | { 394 | "cell_type": "markdown", 395 | "source": [ 396 | "# **Ejericios diapositivas**" 397 | ], 398 | "metadata": { 399 | "id": "FzU5kQwWuSz8" 400 | } 401 | }, 402 | { 403 | "cell_type": "code", 404 | "source": [ 405 | "import numpy as np \n", 406 | "lista = [1,2,3,4,5,6,7,8,9]\n", 407 | "a = np.array(lista, float)\n", 408 | "b = np.array(lista, int)\n", 409 | "c = a.reshape(3,3)\n", 410 | "tam = c.size\n", 411 | "filas = c.shape[0]\n", 412 | "cols = c.shape[1]\n", 413 | "rank = c.ndim \n", 414 | "tipo = type(c)\n" 415 | ], 416 | "metadata": { 417 | "id": "B67VP82Jubpb" 418 | }, 419 | "execution_count": null, 420 | "outputs": [] 421 | }, 422 | { 423 | "cell_type": "code", 424 | "source": [ 425 | "print(tam )\n", 426 | "print(filas )\n", 427 | "print(cols )\n", 428 | "print(rank )\n", 429 | "print(tipo )\n" 430 | ], 431 | "metadata": { 432 | "id": "Cy64lo6FvBEB" 433 | }, 434 | "execution_count": null, 435 | "outputs": [] 436 | }, 437 | { 438 | "cell_type": "code", 439 | "source": [ 440 | "m = 2\n", 441 | "n = 3\n", 442 | "solo_unos = np.ones((m,n))\n", 443 | "matriz_nula = np.zeros((m,n), dtype=int)\n", 444 | "pasos = np.arange(5)\n", 445 | "nuevo = np.arange(0,10,2)\n", 446 | "nuevo_2 = np.arange(0,10,.2)\n", 447 | "nuevo_2.size\n" 448 | ], 449 | "metadata": { 450 | "id": "YxSfYZp-vUpl" 451 | }, 452 | "execution_count": null, 453 | "outputs": [] 454 | }, 455 | { 456 | "cell_type": "code", 457 | "source": [ 458 | "print(nuevo)\n", 459 | "print(nuevo_2)" 460 | ], 461 | "metadata": { 462 | "id": "YdMLOBWFvuqL" 463 | }, 464 | "execution_count": null, 465 | "outputs": [] 466 | }, 467 | { 468 | "cell_type": "code", 469 | "source": [ 470 | "#matrices\n", 471 | "np_2d=np.array([[ 1.73, 1.68, 1.71, 1.89, 1.79],[ 65.4 , 59.2 , 63.6 , 88.4 , 68.7 ]])\n" 472 | ], 473 | "metadata": { 474 | "id": "vU8_zFH4wGXz" 475 | }, 476 | "execution_count": null, 477 | "outputs": [] 478 | }, 479 | { 480 | "cell_type": "code", 481 | "source": [ 482 | "np_2d[1,:]" 483 | ], 484 | "metadata": { 485 | "colab": { 486 | "base_uri": "https://localhost:8080/" 487 | }, 488 | "id": "5748g0EOwW7k", 489 | "outputId": "a58792bc-b9f5-426b-dfb2-b02003f4de07" 490 | }, 491 | "execution_count": null, 492 | "outputs": [ 493 | { 494 | "output_type": "execute_result", 495 | "data": { 496 | "text/plain": [ 497 | "array([65.4, 59.2, 63.6, 88.4, 68.7])" 498 | ] 499 | }, 500 | "metadata": {}, 501 | "execution_count": 15 502 | } 503 | ] 504 | }, 505 | { 506 | "cell_type": "code", 507 | "source": [ 508 | "np_2d[:,3]" 509 | ], 510 | "metadata": { 511 | "colab": { 512 | "base_uri": "https://localhost:8080/" 513 | }, 514 | "id": "yQzRor_NwnD0", 515 | "outputId": "9fa44b3e-21df-4cef-9578-08db05397878" 516 | }, 517 | "execution_count": null, 518 | "outputs": [ 519 | { 520 | "output_type": "execute_result", 521 | "data": { 522 | "text/plain": [ 523 | "array([ 1.89, 88.4 ])" 524 | ] 525 | }, 526 | "metadata": {}, 527 | "execution_count": 16 528 | } 529 | ] 530 | }, 531 | { 532 | "cell_type": "code", 533 | "source": [ 534 | "np_2d[:,1:4]" 535 | ], 536 | "metadata": { 537 | "colab": { 538 | "base_uri": "https://localhost:8080/" 539 | }, 540 | "id": "ge-Ows0Qw4Cz", 541 | "outputId": "f5ecc951-8659-4dd4-cb62-e5e699133306" 542 | }, 543 | "execution_count": null, 544 | "outputs": [ 545 | { 546 | "output_type": "execute_result", 547 | "data": { 548 | "text/plain": [ 549 | "array([[ 1.68, 1.71, 1.89],\n", 550 | " [59.2 , 63.6 , 88.4 ]])" 551 | ] 552 | }, 553 | "metadata": {}, 554 | "execution_count": 17 555 | } 556 | ] 557 | }, 558 | { 559 | "cell_type": "code", 560 | "source": [ 561 | "np_2d>3" 562 | ], 563 | "metadata": { 564 | "id": "5CGOBOVAxc6t", 565 | "outputId": "279b5dce-9c36-46fc-c87f-5bfff1569610", 566 | "colab": { 567 | "base_uri": "https://localhost:8080/" 568 | } 569 | }, 570 | "execution_count": null, 571 | "outputs": [ 572 | { 573 | "output_type": "execute_result", 574 | "data": { 575 | "text/plain": [ 576 | "array([[False, False, False, False, False],\n", 577 | " [ True, True, True, True, True]])" 578 | ] 579 | }, 580 | "metadata": {}, 581 | "execution_count": 18 582 | } 583 | ] 584 | } 585 | ] 586 | } -------------------------------------------------------------------------------- /Worshop Python # 8: Numpy/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Worshop Python # 9: Pandas/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Worshop Python # 9: Pandas/pokemon.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DataEngineering-LATAM/Python-StudyClub/05f8903a245506c08eb62fc120e8cffe5129be46/Worshop Python # 9: Pandas/pokemon.zip --------------------------------------------------------------------------------