1 00:00:00,000 --> 00:00:13,320 Vamos a ir empezando. Buenas tardes a todos de nuevo. Ya hemos llegado más allá de la 2 00:00:13,320 --> 00:00:16,840 mitad del camino. Estamos en la tercera sesión. Nos queda hoy el miércoles. Mucho ánimo 3 00:00:16,840 --> 00:00:22,880 a todos. Las cinco personas que estamos aquí teníamos el otro día cuando estuvimos analizando 4 00:00:22,880 --> 00:00:27,200 la última clase una duda existencial. Ahora nos diréis todos por el chat alguno por lo 5 00:00:27,200 --> 00:00:36,400 menos. Al final, los dos días anteriores han interactuado siempre los mismos profesores. 6 00:00:36,400 --> 00:00:43,360 Tenemos la duda de si el resto es que no está siguiendo, si vamos demasiado rápido. Nos 7 00:00:43,360 --> 00:00:49,240 gustaría tener un poco más de feedback de todos aquellos que no habéis estado diciendo 8 00:00:49,240 --> 00:00:53,480 a mí esto no me sale, esto sí ponemos, esto quitamos. Está claro que esas ocho o nueve 9 00:00:53,480 --> 00:01:00,120 personas que nos habéis ido preguntando que lo vais siguiendo. De hecho, mucho mejor 10 00:01:00,120 --> 00:01:10,760 que yo, por ejemplo. Pero claro, somos unos cuantos más. Entonces, tenemos miedo no estar 11 00:01:10,760 --> 00:01:20,760 llegando a todos. Sería importante saberlo. Entonces, no sé. Yo podría decir nombres 12 00:01:20,760 --> 00:01:26,160 aquí que no habéis participado en ningún momento, pero me parece una tontería. Simplemente 13 00:01:26,160 --> 00:01:32,000 en este minuto primero o segundo, por favor, decidnos si vais bien, todo está bien y el 14 00:01:32,000 --> 00:01:39,080 ritmo es bueno. Javier, muchas gracias. Es imposible, también es una realidad y vosotros 15 00:01:39,080 --> 00:01:44,080 lo sabréis como profesores llegar a todos a la misma velocidad. Eso es muy difícil, 16 00:01:44,080 --> 00:01:48,960 pero de lo que se trata es de llegar las mejores condiciones posibles a la mayoría. Entonces, 17 00:01:48,960 --> 00:01:56,920 nos gustaría saber un poco que vais bien. Está claro que habrá gente que esté por 18 00:01:56,920 --> 00:02:03,640 encima y unos cuantos como yo que estemos por debajo, a la cola del pelotón, por decirlo 19 00:02:03,640 --> 00:02:08,240 de alguna manera, pero sería importante saber que los que estáis en el medio sois la mayoría 20 00:02:08,240 --> 00:02:14,840 de vosotros. Entonces, mira, os dejamos como diez segundos 21 00:02:14,840 --> 00:02:18,720 para que escribáis y decir, oye, vamos bien, no estamos aquí solamente perdiendo el tiempo, 22 00:02:18,800 --> 00:02:23,880 son tres horas muy valiosas vuestras de una tarde de principio de semana que son duras. 23 00:02:23,880 --> 00:02:30,960 Entonces, bueno, eso por ahí. Mientras nos escribís y nos decís algo, deciros también 24 00:02:30,960 --> 00:02:36,960 que el profesor de hoy va a ser Guillermo Lastra, que Germán Alejandro y Guille Menguez nos están 25 00:02:36,960 --> 00:02:43,680 acompañando un rato, hasta que puedan. Iremos contestando, como siempre, al chat según veamos 26 00:02:43,840 --> 00:02:49,840 que podemos introducir esas preguntas. Para el miércoles, que sepáis que nos gustaría, 27 00:02:49,840 --> 00:02:56,840 seguramente se lo demos a Sonia para que lo suba, una pequeña encuesta de cómo habéis encontrado 28 00:02:56,840 --> 00:03:02,440 este curso de cuatro sesiones. Para nosotros es importante porque hemos dedicado esfuerzo, 29 00:03:02,440 --> 00:03:08,560 entonces saber cómo lo hemos hecho. Y por último, bueno, adelantaros también que en función de 30 00:03:08,560 --> 00:03:15,400 dónde lleguemos hoy, pues Guillermo Menguez, que será el profesor del último día, pues irá un poco 31 00:03:15,400 --> 00:03:23,280 más para atrás y haremos más ejercicios o irá directamente a recursos, a inteligencia artificial 32 00:03:23,280 --> 00:03:31,200 aplicada, a lo mejor a la formación de Python y alguna cosa más. A ver, tema de grabación es 33 00:03:31,200 --> 00:03:37,640 importante. Si no han subido es porque nos habían dicho, y seguro que me lo dijeron a mí y se me 34 00:03:37,640 --> 00:03:45,600 olvidó, Sonia y Arturo, que no podía pasar de 1000 megas. Entonces, no eran archivos comprimidos 35 00:03:45,600 --> 00:03:51,960 y no podían subirlos. Ya los tenemos, los acabo de pasar a Sonia, o sea, que lo hará mañana cuando 36 00:03:51,960 --> 00:03:58,720 pueda la sesión 1L2. Sonia, te lo acabo de compartir, esos archivos hace nada, hace 10-15 minutos, 37 00:03:58,720 --> 00:04:04,380 o sea, ya estará. No teníamos la manera de comprimir porque no estamos acostumbrados, no tenemos esa 38 00:04:04,380 --> 00:04:11,140 necesidad. Entonces, como ocupaba muchísimos megas, pues las herramientas gratuitas, ya sabéis que más 39 00:04:11,140 --> 00:04:16,460 de 500 megas no se puede. Bueno, hemos tenido que hacer ahí alguna cosilla, pero ya está, o sea, 40 00:04:16,460 --> 00:04:23,380 que perdonad que no hayan estado disponibles el fin de semana, pero no llegábamos. Por mi parte, 41 00:04:23,380 --> 00:04:31,220 Guillermo, todo tuyo. Estupendo, ya veo que todo el mundo ha comentado más o menos que o conocían 42 00:04:31,220 --> 00:04:42,580 Python o el ritmo es bueno. Vale, perfecto. Vale, pues nada, paso a compartiros. Os tendréis que 43 00:04:42,580 --> 00:04:54,020 descargar el fichero con extensión IP de MB, ¿vale? Dirigiría a la MB. Una pregunta nada más, perdona, 44 00:04:54,020 --> 00:04:58,820 Guille, que te interrumpa. Pregunta, Germán, las soluciones del primer día las tenemos, perdóname, 45 00:04:58,820 --> 00:05:06,740 porque si están en el Teams no miréis, no se las he pasado. ¿Las paso ahora mismo o las subimos ahora? 46 00:05:06,740 --> 00:05:14,620 Sí, sí que están ya, pero no las he subido al Teams. Ponlas en el Teams y se las enviamos a Sonia y ya 47 00:05:14,620 --> 00:05:26,540 que lo vaya subiendo toda. Vale, perfecto. Pues eso, os descargaréis el fichero de teoría y ejercicio de aquí. 48 00:05:26,540 --> 00:05:33,620 El día 3, ¿vale? Es el fichero que vamos a utilizar durante el día de hoy. 49 00:05:37,940 --> 00:05:45,460 Y nada, continuaremos con el mismo entorno, el de Jupyter, ¿vale? Os dejo el link. 50 00:05:45,460 --> 00:06:02,060 Para que podáis acceder y arrastréis o importar también se puede upload file el fichero en cuestión, ¿vale? 51 00:06:02,060 --> 00:06:23,060 Y diciéndome si lo habéis podido importar bien, los que tengáis problemas por favor comentádnoslo por el chat y así podemos ayudar. 52 00:06:23,060 --> 00:06:31,060 Si el tamaño de letra está bien, todo ese tipo de cosas. 53 00:06:31,060 --> 00:06:46,460 Está en el cloud, en el cloud de Educamadrid, recursos, Python. Vale, letra más grande. 54 00:06:47,460 --> 00:06:51,460 Teoría y ejercicios, el primer apartado. 55 00:06:55,460 --> 00:07:03,460 Sí, efectivamente la sesión 3 corresponde a la sesión 2, efectivamente. La nuestra sería la 4. 56 00:07:46,460 --> 00:08:09,460 ¿Alguna más pregunta? Si podemos subirlo por aquí. 57 00:08:10,460 --> 00:08:17,460 El último día lo compartimos por OneDrive, ¿puede ser Germán? 58 00:08:17,460 --> 00:08:19,460 No, por WeTransfer. 59 00:08:19,460 --> 00:08:21,460 Ah, por WeTransfer. 60 00:08:21,460 --> 00:08:24,460 Que el chat aquí no permita juntar archivos. 61 00:08:25,460 --> 00:08:28,460 Va a ser... 62 00:08:28,460 --> 00:08:31,460 No puedo subir a WeTransfer, sí, sin ningún problema. 63 00:08:32,460 --> 00:08:33,460 Vale. 64 00:08:34,460 --> 00:08:39,460 Por si acaso, yo te dejo aquí el link de Educamadrid, por si acaso. 65 00:08:39,460 --> 00:08:43,460 Porque se puede entrar como invitado, se puede descargar. 66 00:08:53,460 --> 00:08:54,460 Vamos a darle a descargar. 67 00:09:02,460 --> 00:09:04,460 Perfecto, estupendo. 68 00:09:05,460 --> 00:09:11,460 Muy bien, pues en principio, si no me decís nada más, comienzo con la clase. 69 00:09:11,460 --> 00:09:18,460 Haremos una pequeña revisión de todo lo que vimos el segundo día. 70 00:09:18,460 --> 00:09:22,460 Comenzaremos por los condicionales. 71 00:09:23,460 --> 00:09:25,460 Muy bien, pues nada. 72 00:09:25,460 --> 00:09:38,460 Digamos que yo hice aquí una especie de ejercicio resumen, en el que vamos repasando un poco todo lo que hemos visto el día 2. 73 00:09:38,460 --> 00:09:47,460 Para ello he hecho una pequeña revisión de todo lo que hemos visto el día 2. 74 00:09:48,460 --> 00:09:53,460 Para ello he hecho una pequeña explicación. 75 00:09:55,460 --> 00:09:57,460 Poco a poco vamos a ir viendo el código. 76 00:10:01,460 --> 00:10:04,460 La primera parte es la de condiciones. 77 00:10:04,460 --> 00:10:08,460 Queremos pedir una entrada en la taquilla. 78 00:10:09,460 --> 00:10:17,460 Según la edad que tengamos, nos darán un precio para ese ticket. 79 00:10:18,460 --> 00:10:26,460 Recordar que el igual es una asignación, entonces el número 6 está asignado a la variable edad. 80 00:10:28,460 --> 00:10:34,460 Por tanto, lo primero que haremos será, una vez ya tenemos la variable establecida, compararemos. 81 00:10:34,460 --> 00:10:39,460 Haremos una condición de comparación con el igual-igual. 82 00:10:39,460 --> 00:10:46,460 Recordad que la función type nos devolvía qué tipo de variable es. 83 00:10:48,460 --> 00:10:55,460 En este caso, al ser un 6, se entiende como un entero, un int. 84 00:10:55,460 --> 00:10:58,460 Por tanto, la primera afirmación será correcta. 85 00:10:59,460 --> 00:11:04,460 Podemos darle a ejecutar para comprobar que es el tipo correcto. 86 00:11:05,460 --> 00:11:16,460 En caso contrario, el else es el que indica, en el caso defeccional, que no se cumplen las comparaciones anteriores. 87 00:11:16,460 --> 00:11:19,460 Entonces se nos imprimirá un tipo erróneo. 88 00:11:19,460 --> 00:11:20,460 Vamos a hacer la prueba. 89 00:11:20,460 --> 00:11:30,460 Esto es un string, haremos tipo erróneo, y por tanto no podrá hacer la comparación, como indica aquí. 90 00:11:40,460 --> 00:11:41,460 Volvemos. 91 00:11:41,460 --> 00:11:49,460 Entonces, una vez ya tenemos establecido que el tipo es el correcto, pasamos a hacer la prueba. 92 00:11:49,460 --> 00:11:52,460 Pasamos a comprobar la edad. 93 00:11:53,460 --> 00:11:56,460 Lo primero que haremos será hacer un menor que. 94 00:11:56,460 --> 00:12:00,460 Si en el caso de que la edad sea menor que 8, el precio será de 0. 95 00:12:00,460 --> 00:12:03,460 Los niños tienen un precio de 0 euros. 96 00:12:04,460 --> 00:12:05,460 El else if. 97 00:12:05,460 --> 00:12:09,460 Recordemos que era como escribir un else if. 98 00:12:10,460 --> 00:12:16,460 Entonces sería, en el caso de que edad menor que 8, es una condición. 99 00:12:16,460 --> 00:12:21,460 En el caso de que si no se ha cumplido la anterior, vas a comprobar la siguiente. 100 00:12:21,460 --> 00:12:30,460 La siguiente sería edad menor o igual que 18, o la edad es mayor que 64, el precio pasa a ser de 4 euros. 101 00:12:31,460 --> 00:12:37,460 Y si no se ha cumplido ninguna de las anteriores, entonces el precio será de 10. 102 00:12:38,460 --> 00:12:46,460 Y por último, utilizamos la función print, que nos escribirá por pantalla el precio de la entrada es, 103 00:12:46,460 --> 00:12:55,460 el precio que le hemos establecido según la comparación que hemos hecho previamente. 104 00:12:59,460 --> 00:13:01,460 Hasta aquí la comparación, muy sencillita. 105 00:13:03,460 --> 00:13:04,460 Pasamos a bucles. 106 00:13:07,460 --> 00:13:09,460 Vimos el for y el while. 107 00:13:11,460 --> 00:13:16,460 El while era el que estaba comprobando constantemente, era el más sencillito de idealizar, 108 00:13:16,460 --> 00:13:24,460 ya que tenía una manera de comportarse muy similar a cómo pensamos nosotros, los humanos. 109 00:13:26,460 --> 00:13:34,460 Y luego el for, que es el que nosotros le decimos el rango que tiene que ir recorriendo. 110 00:13:34,460 --> 00:13:46,460 Nosotros, por ejemplo, si establecemos una palabra, vamos a poner frase, más bien recorrer esta frase. 111 00:13:48,460 --> 00:13:56,460 La función range es la que genera un array de enteros hasta el número que le indiquemos. 112 00:13:56,460 --> 00:14:06,460 Dentro tenemos len, que es otra función que nos indicaba el tamaño de esa frase, de ese objeto. 113 00:14:06,460 --> 00:14:32,460 Si tenemos alguna duda, le damos a ejecutar. 114 00:14:36,460 --> 00:14:56,460 Si tenemos alguna duda, le damos a ejecutar. 115 00:14:57,460 --> 00:15:00,460 A ver si se me vuelve loco, vamos a resetearlo. 116 00:15:00,460 --> 00:15:08,460 Ah, que eran tres cerraduras. 117 00:15:08,460 --> 00:15:29,460 Bueno, se me ha ejecutado. 118 00:15:29,460 --> 00:15:45,460 Vale, el rango es de 0 a 19. Tenemos aquí 20 letras. 119 00:15:45,460 --> 00:16:05,460 Por eso el for lo que va a hacer es recorrer el índice, desde 0 hasta 19. 120 00:16:06,460 --> 00:16:20,460 Entonces va a ir recorriendo, va a coger el objeto frase y el índice de 0 a 19, va a ir pasándole el número 121 00:16:20,460 --> 00:16:29,460 y entre corchetes lo que indicamos es qué posición del índice de toda esta cadena vamos a ir imprimiendo. 122 00:16:29,460 --> 00:16:38,460 Por tanto, lo que ya estamos viendo es el 0, el 1, el 2, el 3 y así, consecutivamente. 123 00:16:38,460 --> 00:16:48,460 Con el while sucede lo siguiente, tenemos un i, establecemos una variable de índice, para ser más claros. 124 00:16:49,460 --> 00:16:59,460 Vamos a establecer una condición, mientras el índice sea menor que 3, hacemos la ejecución que nosotros queramos. 125 00:16:59,460 --> 00:17:15,460 En este caso sería imprimir índice. Imprimimos el índice y posteriormente hacemos un incremento de 1. 126 00:17:15,460 --> 00:17:28,460 Esto sería lo mismo que decir índice es igual a índice más 1. Es lo mismo que decir lo que teníamos antes, 127 00:17:28,460 --> 00:17:37,460 índice más igual 1. De una manera abreviada, pero a fin de cuentas es lo mismo. 128 00:17:40,460 --> 00:17:48,460 Por tanto, eso se nos imprimirá todos los números menores que 3. El 0, el 1 y el 2. 129 00:17:48,460 --> 00:18:01,460 Muy bien, hasta aquí los bucles. Vemos que no tiene mucha historia. 130 00:18:01,460 --> 00:18:13,460 Listas y tuplas. Las listas, como conocemos, son un conjunto de objetos siempre del mismo tipo y las tuplas puedes almacenar más de un tipo. 131 00:18:14,460 --> 00:18:23,460 El ejemplo que hemos establecido es el de tener una lista de ingredientes para elaborar una lenteja, por ejemplo, 132 00:18:24,460 --> 00:18:41,460 Entonces tenemos la asignación y cuando queremos añadir un objeto, establecer una serie de cadenas, por ejemplo en este caso, 133 00:18:41,460 --> 00:18:56,460 entre corchetes, importante, y dentro, separado por comas, todas las variables, en este caso todos los strings, escribiéndolos. 134 00:18:57,460 --> 00:19:11,460 Para obtener una sección, por ejemplo, un substring, una sección de todo este objeto, podemos abrir corchetes, 135 00:19:11,460 --> 00:19:18,460 indicarle el valor inicial, dos puntos y el valor final. Y diréis, ¿dónde está el valor final? 136 00:19:19,460 --> 00:19:31,460 Cuando no le indicamos nada, entonces lo que significa es, coge todo, digamos, si yo le indico aquí del nada al 4, 137 00:19:31,460 --> 00:19:40,460 entonces nos cogerá del primero que obtenga al número 4. Tener en cuenta que en este caso cebolla va a ser el 0. 138 00:19:40,460 --> 00:19:45,460 Entonces 0, 1, 2, 3 y 4, hasta zanahoria. 139 00:19:51,460 --> 00:19:56,460 Coge cebolla, aceite, ajo y pimentón. Zanahoria no lo incluye. 140 00:19:58,460 --> 00:20:02,460 Hacemos lo contrario, del 4 al vacío. 141 00:20:03,460 --> 00:20:11,460 O bueno, del 4 al 5, entonces recogería 1, solamente zanahoria, ¿veis? Está en la posición. 142 00:20:13,460 --> 00:20:20,460 Esto para obtener una sección de este listado. 143 00:20:21,460 --> 00:20:37,460 Si queremos eliminar un objeto, entonces tendríamos que utilizar el nombre del listado, el punto y posteriormente la acción que queremos realizar, 144 00:20:37,460 --> 00:20:46,460 en este caso remove, que es el que nos va a permitir eliminar un elemento y tenemos que escribir concretamente el objeto que está añadido. 145 00:20:47,460 --> 00:20:52,460 Entonces nos va a eliminar pimentón. En este listado ya no está pimentón, ¿veis? 146 00:20:54,460 --> 00:21:04,460 Muy bien, ingredientes.pop. Esta acción lo que hace es eliminar el último elemento que tenemos, que en este caso sería jamón, 147 00:21:04,460 --> 00:21:16,460 ya deja de estar en el listado. Lo imprimimos, somos capaces de obtenerlo, pero la siguiente vez que imprimamos ya no está jamón. 148 00:21:17,460 --> 00:21:34,460 ¿Qué queremos añadir? Un nuevo ingrediente, pero en este caso insert, la acción insert nos permite hacerlo en una posición indicada, en este caso el 0, por ejemplo. 149 00:21:34,460 --> 00:21:39,460 Entonces lo añadirá el primero de la lista. Ahí lo tenemos, el 0. 150 00:21:40,460 --> 00:21:52,460 Y por último, la última acción que os enseñaré, os recordaré, será la del reverse. Esta es la que nos permite voltear toda la lista, cambiar el orden. 151 00:21:52,460 --> 00:21:58,460 Por lo tanto, lentejas, que era el último, pasa a ser el primero y así sucesivamente. 152 00:21:59,460 --> 00:22:13,460 Tampoco me he metido mucho en tuplas, ya que no es algo que se utilice mucho, así que simplemente mencionar que existen y que el indicador para establecer una tupla es el paréntesis. 153 00:22:13,460 --> 00:22:25,460 Y dentro meteremos los objetos que deseemos. Ya veis que aquí podemos introducir una cadena de string, un entero, un booleano e imprimirlo por pantalla. 154 00:22:26,460 --> 00:22:37,460 Muy bien, hasta aquí el repaso. Hoy lo que veremos será diccionarios, funciones, parámetros y argumentos, módulos y clases. 155 00:22:41,460 --> 00:22:44,460 Muy bien, hasta aquí todo bien. 156 00:22:44,460 --> 00:23:09,460 ¿Qué pasa si no se ha firmado la entrada, Sonia? 157 00:23:14,460 --> 00:23:26,460 Bueno, vamos a ver si lo ve. También me he olvidado. ¿Se ha olvidado? ¿Firmó la salida? Ah, que firma la salida, vale. 158 00:23:26,460 --> 00:23:34,460 Ya lo estáis viendo, los que no o las que no habéis firmado, firmarán la salida. Y ahora ya, seguimos. 159 00:23:34,460 --> 00:23:37,460 ¿Qué quiere decir la última instrucción, Guille? 160 00:23:37,460 --> 00:23:44,460 Sí, nada, es el salto de línea. Esa es la expresión que he utilizado para que se viese más bonito a la salida. 161 00:23:44,460 --> 00:23:58,460 Quería separar lo que eran las listas de lo que eran las tuplas y por tanto hice un print L barra N, barra invertida N, que eso es el salto de línea. 162 00:23:58,460 --> 00:24:02,460 Sin más, me he atentado. 163 00:24:08,460 --> 00:24:14,460 Muy bien, pues nada, pasamos a explicar los diccionarios. 164 00:24:14,460 --> 00:24:25,460 Los diccionarios son estructuras más flexibles a lo que hemos visto anteriormente como son las listas y las tuplas 165 00:24:25,460 --> 00:24:36,460 y bastante organizadas ya que utilizan identificadores o claves a las que le podemos asignar un valor. 166 00:24:36,460 --> 00:24:49,460 Entonces utilizan esa estructura de clave-valor en la que podemos darle un nombre estratégico y único a cada uno de nuestros valores, 167 00:24:49,460 --> 00:24:52,460 de manera que podemos acceder más rápidamente. 168 00:24:52,460 --> 00:25:03,460 ¿Qué más? Bueno, eso, que son más dinámicos ya que nos permiten eliminar y obtener información más rápidamente. 169 00:25:03,460 --> 00:25:16,460 Lo que se explicaba que están indexados, que es la palabra técnica, que tienen una clave, una key específica y única para cada uno de los elementos. 170 00:25:16,460 --> 00:25:21,460 No podemos repetir dos claves. 171 00:25:21,460 --> 00:25:31,460 Y eso que podemos anidar, importante, se pueden anidar unos dentro de otros y podemos hacerlos tan grandes como queramos. 172 00:25:32,460 --> 00:25:48,460 A través de estos símbolos, de estas llaves, podemos indicar, en este caso es un diccionario vacío al que hemos asignado a la variable alumno 173 00:25:48,460 --> 00:25:57,460 y nada, posteriormente, como podéis ver aquí, le estableceremos una clave que será el nombre, en este caso. 174 00:25:57,460 --> 00:26:06,460 Importante que sean string. He probado a utilizar enteros y funciona, pero no os lo recomiendo. 175 00:26:06,460 --> 00:26:19,460 No sé si será cosa del programa o tal, pero lo que yo he visto siempre es que siempre son cadenas de string y por tanto es lo que deberíamos utilizar. 176 00:26:19,460 --> 00:26:24,460 Luego el valor, podemos utilizar el tipo que queramos. 177 00:26:24,460 --> 00:26:31,460 Y por tanto eso, separado siempre por los dos puntos, importante, la clave de valor. 178 00:26:31,460 --> 00:26:43,460 Y este es el primer ejemplo que vamos a utilizar, el de alumno, nombre Juanito, edad 25 años y ciudad León, por ejemplo. 179 00:26:43,460 --> 00:26:56,460 Si imprimimos, veremos que se imprime todo el objeto, las llaves, clave valor, coma, clave valor, coma, clave valor, en esta estructura. 180 00:26:57,460 --> 00:27:18,460 Formas de acceder al diccionario. Tenemos dos, por suerte, una es por medio de los corchetes estos y dentro estableceremos la clave que nos devolverá el valor. 181 00:27:18,460 --> 00:27:38,460 Si lo ejecutamos, nos devolverá 25, ya que la edad era de 25 años, o también podemos usarlo con alumno.get. 182 00:27:38,460 --> 00:27:55,460 Esta función nos devuelve, pasándole como parámetro, pasándole el nombre dentro de los paréntesis de la función get, nos devolverá el objeto, ciudad León. 183 00:27:55,460 --> 00:28:16,460 Para añadir objetos es muy sencillito, ya que simplemente si nosotros abrimos con los corchetes y metemos un texto, una clave que no existía, como es, por ejemplo, teléfono, no existía dentro del alumno, pues nos lo añade, así de sencillo, no tiene más misterio. 184 00:28:17,460 --> 00:28:27,460 Aquí vemos que efectivamente nos ha escrito el teléfono, es un entero, un número entero, nos lo ha escrito. 185 00:28:28,460 --> 00:28:48,460 Si queremos modificar algo, por ejemplo, que en la base de datos del colegio se han equivocado, que el chaval no tenía 25 años, tenía 15, pues perfectamente podemos buscar dentro de los corchetes la clave edad igual de asignación y el 15. 186 00:28:49,460 --> 00:28:54,460 De esta manera nos va a modificar la edad. 187 00:28:55,460 --> 00:28:57,460 Ahora ya aparece como 15. 188 00:28:59,460 --> 00:29:09,460 Y por último, para eliminar el dato, utilizaremos del. Es verdad que es diferente a todo lo que hemos visto hasta ahora. 189 00:29:09,460 --> 00:29:26,460 Utilizamos esta palabra reservada por Python, por la cual si le pasamos lo que queremos eliminar, en este caso es dentro del diccionario alumno, la clave teléfono nos la eliminará. 190 00:29:26,460 --> 00:29:30,460 Es un poco diferente, pero bueno. 191 00:29:31,460 --> 00:29:37,460 Más, lo que os explicaba antes, los diccionarios también pueden anidarse. 192 00:29:37,460 --> 00:29:44,460 Aquí, por ejemplo, podemos añadirle información sobre el colegio del alumno. 193 00:29:45,460 --> 00:30:09,460 Entonces establecemos un diccionario, que es el que luego vamos a asignar al diccionario alumno, con la clave colegio, y dentro especificamos la misma estructura, clave valor de nombre leonés, por ejemplo, calle José Aguado. 194 00:30:10,460 --> 00:30:17,460 Vale, inspección, otra clave, pues está pasada la inspección del colegio, perfecto. 195 00:30:19,460 --> 00:30:34,460 Eso, el acceso a los diccionarios es igual que hemos visto antes, igual que accedíamos a una clave dentro de un alumno, esto es secuencial, entonces accederemos una dentro de otra, vamos a ir accediendo. 196 00:30:34,460 --> 00:30:50,460 Y esto infinitamente, entonces en este caso vamos a acceder al colegio, a la clave colegio, y dentro de él a la clave calle, nos tiene que devolver José Aguado, perfecto, todo bien. 197 00:30:50,460 --> 00:31:11,460 Imaginaos que vosotros tenéis el nombre de la clave a la que queréis acceder, digamos que la tenéis almacenada en una variable. 198 00:31:12,460 --> 00:31:27,460 Os he puesto este ejemplo, que tenemos un listado en el que va a ir recorriendo, digamos que tienes almacenados donde queremos acceder, queremos acceder a la clave colegio y después a la clave calle. 199 00:31:28,460 --> 00:31:47,460 Digamos que en vez de meterse los corchetes y el nombre en cuestión, accederemos por ejemplo al listado, al índice cero del listado, de la misma manera que podríamos tener una variable, colegio, 200 00:31:48,460 --> 00:31:52,460 primero aquí, 201 00:31:58,460 --> 00:31:59,460 segundo aquí, 202 00:32:18,460 --> 00:32:20,460 y tercero aquí. 203 00:32:41,460 --> 00:32:43,460 Y de esta manera también podemos acceder 204 00:32:43,460 --> 00:32:49,460 a la información que tenemos anidada dentro del diccionario. 205 00:32:54,460 --> 00:33:04,460 Más cositas, esto es muy útil ya que podemos comprobar si existe una key, entonces podemos pasarle este condicional, 206 00:33:04,460 --> 00:33:19,460 ir, el texto, la clave que queremos comprobar, in, está dentro del diccionario alumno, el alumno tiene asignado colegio. 207 00:33:19,460 --> 00:33:21,460 En caso contrario, 208 00:33:34,460 --> 00:33:47,460 tabulamos bien el alumno, no tiene colegio asignado. 209 00:33:47,460 --> 00:34:10,460 También podemos iterar sobre los diccionarios con el for, si le pasamos el for, por ejemplo, hemos puesto recoger el diccionario del colegio, 210 00:34:10,460 --> 00:34:22,460 y le hemos pasado una variable, esto es una manera de no tener que estar escribiendo constantemente alumno, entre corchetes colegio, entre corchetes lo que queramos, 211 00:34:22,460 --> 00:34:30,460 en este caso para abreviar, lo que hacemos es pasarle una variable y jugar con el colegio. 212 00:34:31,460 --> 00:34:44,460 Sería lo mismo que hacer aquí esto y esto, solo que se lo estamos pasando una variable para ayudar más a la hora de leer el código. 213 00:34:44,460 --> 00:35:03,460 Y de esta forma vais recorriendo cada una de las claves, digamos que cuando no le indicamos nada, lo que va a recorrer son las claves, va a recorrer el nombre, calle, inspección. 214 00:35:04,460 --> 00:35:24,460 La iteración se puede hacer o bien de esta manera, para comprobar las claves, bien con esta llamada, si le pasamos el punto values, esto lo que nos permite es acceder a los valores, específicamente a los valores. 215 00:35:24,460 --> 00:35:50,460 Entonces si le ejecutamos el colegio, ejecutamos, ahí estaría. 216 00:35:51,460 --> 00:36:06,460 Entonces ya nos va devolviendo Leones, José Aguado y True, esos son los tres valores que tenemos para el colegio, Leones, José Aguado y True. 217 00:36:06,460 --> 00:36:28,460 Entonces si queremos obtener algo, pues esta es la manera. Y si queremos obtener ambos, utilizaremos items, esto lo que nos permite es que nos devuelva por cada iteración dos variables, una es clave y otra es valor. 218 00:36:28,460 --> 00:36:39,460 De esta manera podemos ir imprimiendo eso, podemos obtener en la misma iteración los dos valores, la información de los dos, la clave y el valor. 219 00:36:39,460 --> 00:36:43,460 Porque claro, de estas únicamente obteníamos uno. 220 00:36:43,460 --> 00:36:48,460 Y nada, por fin llega el primer ejercicio. 221 00:36:48,460 --> 00:36:52,460 Vamos a respirar, espera un momento, vamos a respirar. 222 00:36:52,460 --> 00:37:03,460 Hay un par de personas, por lo menos, que tenían problemas para ejecutar esta Alejandro y esta Germán, intentando a ver si lo solucionan. 223 00:37:04,460 --> 00:37:15,460 Bien, por no dejar perdido algo que nos habían pedido, que yo creo que si os parece bien, chicos, lo podríamos hacer o justo antes del descanso o justo después, 224 00:37:15,460 --> 00:37:24,460 el explicar un poco cómo funciona Jupiter y de qué manera se pueden descargar y presentar a los alumnos, si es que se puede trabajar en los centros con él. 225 00:37:24,460 --> 00:37:31,460 Si os parece, lo podemos dejar a lo mejor para empezar la segunda parte de esta tarde de hoy, ¿cómo te parece, Guille? 226 00:37:31,460 --> 00:37:32,460 Bien. 227 00:37:36,460 --> 00:37:39,460 ¿Qué significa la F? Creo que era lo único que nos quedaba. 228 00:37:39,460 --> 00:37:40,460 ¿Era la pregunta? 229 00:37:40,460 --> 00:37:41,460 Contestar. 230 00:37:41,460 --> 00:37:42,460 Vale, vale, vale. 231 00:37:42,460 --> 00:37:45,460 A ver, hay varias maneras de imprimir. 232 00:37:45,460 --> 00:37:53,460 Digamos que podríamos imprimir, es lo que se llama en Python FString. 233 00:37:53,460 --> 00:38:00,460 Es una manera de especificar, digamos, de hacer en una sola línea todo, en vez de... 234 00:38:00,460 --> 00:38:15,460 Esto sería lo mismo que print clave más comillas dos puntos más valor, ¿vale? 235 00:38:15,460 --> 00:38:19,460 Así. Esto es lo que conocíamos hasta ahora, ¿vale? 236 00:38:19,460 --> 00:38:24,460 Y con el F lo que hacemos es, todo lo que metamos entre corchetes serán nombres de variables, ¿vale? 237 00:38:24,460 --> 00:38:35,460 Entonces, si especificamos aquí antes de las comillas, la F se convertirá en un FString y por tanto todo lo que metamos entre corchetes serán variables 238 00:38:35,460 --> 00:38:39,460 y lo que no será texto a imprimir tal cual. 239 00:38:40,460 --> 00:38:41,460 Ehm... 240 00:38:42,460 --> 00:38:43,460 ¿Vale? 241 00:38:43,460 --> 00:38:47,460 Eso es porque no está... no está bien. 242 00:38:59,460 --> 00:39:06,460 Eso es porque tenemos que hacer una... clave. 243 00:39:10,460 --> 00:39:16,460 Y aquí le vamos a meter un valor más. 244 00:39:16,460 --> 00:39:22,460 Sdr, lo convertimos todo a... 245 00:39:22,460 --> 00:39:24,460 A darle... ahí estaría. 246 00:39:24,460 --> 00:39:26,460 Vale, sería lo mismo. 247 00:39:26,460 --> 00:39:33,460 Digamos que al tener un booleano, lo que me está obligando es hacer un casting. 248 00:39:33,460 --> 00:39:44,460 Lo que aprendimos con Germán era que haciendo un casting convertimos todo lo que sea en un String, ¿vale? 249 00:39:44,460 --> 00:39:52,460 Porque claro, no podemos concatenar, no podemos hacer más algo si no es del mismo tipo, porque si no se vuelve loco. 250 00:39:53,460 --> 00:39:59,460 El F lo que nos permite es eso, no tener que estar aquí pues haciendo castings ni cosas raras. 251 00:39:59,460 --> 00:40:02,460 Él ya es listo y sobreentiende todo. 252 00:40:04,460 --> 00:40:05,460 Vale. 253 00:40:05,460 --> 00:40:12,460 Javier y Madrid, ¿habéis podido solucionar el tema de la impresión de ejecutar? 254 00:40:13,460 --> 00:40:21,460 No sé si Germán y Alejandro si lo hacéis en... si les habéis ayudado por interno. 255 00:40:23,460 --> 00:40:27,460 No, no ha habido más mensajes al menos. A mí no me ha llegado nada más. 256 00:40:27,460 --> 00:40:30,460 Vale, veo que el único problema era del Kerner, ¿no? 257 00:40:31,460 --> 00:40:34,460 Sí, le pasaba a los dos yo creo, ¿no? 258 00:40:36,460 --> 00:40:42,460 Había dicho Alejandro que abriera una pestaña de incógnito para que se borraran las cookies, no sé si lo han hecho o no. 259 00:40:42,460 --> 00:40:57,460 Bueno, seguimos, vamos con el ejercicio y mientras estén Alejandro y Germán, si podéis ayudarles, os lo agradecemos, ¿vale? 260 00:40:57,460 --> 00:40:59,460 El archivo no está corrupto. 261 00:41:01,460 --> 00:41:08,460 Se ha pillado el tema de las cookies, ¿no? Ha tardado mucho en responder, tras estar con un rato ha terminado respondiendo. 262 00:41:08,460 --> 00:41:13,460 Vale, y había otra persona que aparece como Madrid también, que estaba ahí atascada. 263 00:41:19,460 --> 00:41:23,460 Bueno, y adelante ya intentamos ayudarles por interno, ¿vale? 264 00:41:24,460 --> 00:41:33,460 Vale, perfecto. Nada, entonces procedemos con el primer ejercicio, ¿vale? Os explico un poco. 265 00:41:34,460 --> 00:41:43,460 Hemos añadido, digamos que tenemos un diccionario, con lo que veis, tenemos la estructura que hemos visto hasta ahora, que era la de clave y valor. 266 00:41:43,460 --> 00:41:51,460 Pues tenemos título, el que sea, año, 1999, director, Peter Jackson, género, X, ¿no? 267 00:41:51,460 --> 00:42:02,460 Tenemos varios tipos, actores principales, que es un listado, tenemos clasificación, que es un entero, comentarios, aquí tenemos anidado, otro diccionario. 268 00:42:02,460 --> 00:42:08,460 Con los diferentes comentarios, pues eso, Anónimo 1, dice que se durmió. 269 00:42:09,460 --> 00:42:13,460 Y Juanito, que no se enteró de lo que iba la película. 270 00:42:15,460 --> 00:42:24,460 Nada, nos he puesto aquí una serie de correcciones, ya que al introducirlo a la base de datos, pues hemos cometido errores, ¿vale? 271 00:42:24,460 --> 00:42:35,460 Entonces lo que vamos a hacer es utilizar las secuencias, las acciones que hemos aprendido antes, para que la película cambie el año, ¿vale? 272 00:42:35,460 --> 00:42:45,460 Para que no sea 1999, sino que sea 2001. Añadamos un nuevo actor principal, que es Ian Mckellen, ¿vale? 273 00:42:46,460 --> 00:42:56,460 Vamos a imprimir por pantalla los nombres de los asistentes, entre paréntesis he puesto que son las claves de los comentarios, ¿vale? 274 00:42:56,460 --> 00:43:05,460 Anónimo 1 y Juanito, clave, valor, os pido estos dos, los imprimáis por pantalla, Anónimo 1 y Juanito. 275 00:43:05,460 --> 00:43:13,460 Eliminemos los comentarios, ¿vale? No quede constancia de ellos en el diccionario y imprimamos todo por pantalla. 276 00:43:15,460 --> 00:43:22,460 Y nada, os vamos a dejar unos minutos para que podáis realizar el ejercicio tranquilamente. 277 00:43:45,460 --> 00:43:48,460 Subtítulos por la comunidad de Amara.org 278 00:44:15,460 --> 00:44:18,460 Subtítulos por la comunidad de Amara.org 279 00:44:45,460 --> 00:44:48,460 Subtítulos por la comunidad de Amara.org 280 00:45:15,460 --> 00:45:18,460 Subtítulos por la comunidad de Amara.org 281 00:45:45,460 --> 00:45:48,460 Subtítulos por la comunidad de Amara.org 282 00:46:15,460 --> 00:46:18,460 Subtítulos por la comunidad de Amara.org 283 00:46:45,460 --> 00:46:48,460 Subtítulos por la comunidad de Amara.org 284 00:47:15,460 --> 00:47:18,460 Subtítulos por la comunidad de Amara.org 285 00:47:45,460 --> 00:47:48,460 Subtítulos por la comunidad de Amara.org 286 00:48:15,460 --> 00:48:18,460 Subtítulos por la comunidad de Amara.org 287 00:48:45,460 --> 00:48:48,460 Subtítulos por la comunidad de Amara.org 288 00:49:15,460 --> 00:49:18,460 Subtítulos por la comunidad de Amara.org 289 00:49:45,460 --> 00:49:48,460 Subtítulos por la comunidad de Amara.org 290 00:50:15,460 --> 00:50:18,460 Subtítulos por la comunidad de Amara.org 291 00:50:45,460 --> 00:50:48,460 Subtítulos por la comunidad de Amara.org 292 00:51:15,460 --> 00:51:18,460 Subtítulos por la comunidad de Amara.org 293 00:51:45,460 --> 00:51:48,460 Subtítulos por la comunidad de Amara.org 294 00:52:15,460 --> 00:52:18,460 Subtítulos por la comunidad de Amara.org 295 00:52:45,460 --> 00:52:48,460 Subtítulos por la comunidad de Amara.org 296 00:53:15,460 --> 00:53:18,460 Subtítulos por la comunidad de Amara.org 297 00:53:45,460 --> 00:53:48,460 Subtítulos por la comunidad de Amara.org 298 00:54:15,460 --> 00:54:18,460 Subtítulos por la comunidad de Amara.org 299 00:54:45,460 --> 00:54:48,460 Subtítulos por la comunidad de Amara.org 300 00:55:15,460 --> 00:55:18,460 Subtítulos por la comunidad de Amara.org 301 00:55:45,460 --> 00:55:48,460 Subtítulos por la comunidad de Amara.org 302 00:56:15,460 --> 00:56:18,460 Subtítulos por la comunidad de Amara.org 303 00:56:45,460 --> 00:56:48,460 Subtítulos por la comunidad de Amara.org 304 00:57:15,460 --> 00:57:18,460 Subtítulos por la comunidad de Amara.org 305 00:57:45,460 --> 00:57:48,460 Subtítulos por la comunidad de Amara.org 306 00:58:15,460 --> 00:58:18,460 Subtítulos por la comunidad de Amara.org 307 00:58:45,460 --> 00:58:48,460 Subtítulos por la comunidad de Amara.org 308 00:59:15,460 --> 00:59:18,460 Subtítulos por la comunidad de Amara.org 309 00:59:45,460 --> 00:59:48,460 Subtítulos por la comunidad de Amara.org 310 01:00:15,460 --> 01:00:18,460 Subtítulos por la comunidad de Amara.org 311 01:00:45,460 --> 01:00:48,460 Subtítulos por la comunidad de Amara.org 312 01:01:15,460 --> 01:01:18,460 Subtítulos por la comunidad de Amara.org 313 01:01:45,460 --> 01:01:48,460 Subtítulos por la comunidad de Amara.org 314 01:02:15,460 --> 01:02:18,460 Subtítulos por la comunidad de Amara.org 315 01:02:45,460 --> 01:02:48,460 Subtítulos por la comunidad de Amara.org 316 01:03:15,460 --> 01:03:18,460 Subtítulos por la comunidad de Amara.org 317 01:03:45,460 --> 01:03:48,460 Subtítulos por la comunidad de Amara.org 318 01:04:15,460 --> 01:04:18,460 Subtítulos por la comunidad de Amara.org 319 01:04:45,460 --> 01:04:48,460 Subtítulos por la comunidad de Amara.org 320 01:05:15,460 --> 01:05:18,460 Subtítulos por la comunidad de Amara.org 321 01:05:45,460 --> 01:05:48,460 Subtítulos por la comunidad de Amara.org 322 01:06:15,460 --> 01:06:18,460 Subtítulos por la comunidad de Amara.org 323 01:06:45,460 --> 01:06:48,460 Subtítulos por la comunidad de Amara.org 324 01:07:15,460 --> 01:07:18,460 Subtítulos por la comunidad de Amara.org 325 01:07:45,460 --> 01:07:48,460 Subtítulos por la comunidad de Amara.org 326 01:08:15,460 --> 01:08:18,460 Subtítulos por la comunidad de Amara.org 327 01:08:45,460 --> 01:08:48,460 Subtítulos por la comunidad de Amara.org 328 01:09:15,460 --> 01:09:18,460 Subtítulos por la comunidad de Amara.org 329 01:09:45,460 --> 01:09:48,460 Subtítulos por la comunidad de Amara.org 330 01:10:15,460 --> 01:10:18,460 Subtítulos por la comunidad de Amara.org 331 01:10:45,460 --> 01:10:48,460 Subtítulos por la comunidad de Amara.org 332 01:11:15,460 --> 01:11:18,460 Subtítulos por la comunidad de Amara.org 333 01:11:45,460 --> 01:11:48,460 Subtítulos por la comunidad de Amara.org 334 01:12:15,460 --> 01:12:18,460 Subtítulos por la comunidad de Amara.org 335 01:12:45,460 --> 01:12:48,460 Subtítulos por la comunidad de Amara.org 336 01:13:15,460 --> 01:13:18,460 Subtítulos por la comunidad de Amara.org 337 01:13:45,460 --> 01:13:48,460 Subtítulos por la comunidad de Amara.org 338 01:14:15,460 --> 01:14:19,460 Subtítulos por la comunidad de Amara.org 339 01:14:45,460 --> 01:14:48,460 Subtítulos por la comunidad de Amara.org 340 01:15:15,460 --> 01:15:18,460 Subtítulos por la comunidad de Amara.org 341 01:15:45,460 --> 01:15:48,460 Subtítulos por la comunidad de Amara.org 342 01:16:15,460 --> 01:16:19,460 Subtítulos por la comunidad de Amara.org 343 01:16:45,460 --> 01:16:49,460 Subtítulos por la comunidad de Amara.org 344 01:17:15,460 --> 01:17:18,460 Subtítulos por la comunidad de Amara.org 345 01:17:45,460 --> 01:17:49,460 Subtítulos por la comunidad de Amara.org 346 01:18:15,460 --> 01:18:19,460 Subtítulos por la comunidad de Amara.org 347 01:18:45,460 --> 01:18:48,460 Subtítulos por la comunidad de Amara.org 348 01:19:15,460 --> 01:19:18,460 Subtítulos por la comunidad de Amara.org 349 01:19:45,460 --> 01:19:48,460 Subtítulos por la comunidad de Amara.org 350 01:20:15,460 --> 01:20:18,460 Subtítulos por la comunidad de Amara.org 351 01:20:45,460 --> 01:20:48,460 Subtítulos por la comunidad de Amara.org 352 01:21:15,460 --> 01:21:18,460 Subtítulos por la comunidad de Amara.org 353 01:21:45,460 --> 01:21:49,460 Subtítulos por la comunidad de Amara.org 354 01:22:15,460 --> 01:22:18,460 Subtítulos por la comunidad de Amara.org 355 01:22:45,460 --> 01:22:48,460 Subtítulos por la comunidad de Amara.org 356 01:23:15,460 --> 01:23:18,460 Subtítulos por la comunidad de Amara.org 357 01:23:45,460 --> 01:23:48,460 Subtítulos por la comunidad de Amara.org 358 01:24:15,460 --> 01:24:18,460 Subtítulos por la comunidad de Amara.org 359 01:24:45,460 --> 01:24:49,460 Subtítulos por la comunidad de Amara.org 360 01:25:15,460 --> 01:25:18,460 Subtítulos por la comunidad de Amara.org 361 01:25:18,460 --> 01:25:21,460 Subtítulos por la comunidad de Amara.org 362 01:25:45,460 --> 01:25:48,460 Subtítulos por la comunidad de Amara.org 363 01:26:15,460 --> 01:26:18,460 Subtítulos por la comunidad de Amara.org 364 01:26:45,460 --> 01:26:48,460 Subtítulos por la comunidad de Amara.org 365 01:27:15,460 --> 01:27:18,460 Subtítulos por la comunidad de Amara.org 366 01:27:45,460 --> 01:27:48,460 Subtítulos por la comunidad de Amara.org 367 01:28:15,460 --> 01:28:18,460 Subtítulos por la comunidad de Amara.org 368 01:28:45,460 --> 01:28:48,460 Subtítulos por la comunidad de Amara.org 369 01:29:15,460 --> 01:29:18,460 Subtítulos por la comunidad de Amara.org 370 01:29:45,460 --> 01:29:48,460 Subtítulos por la comunidad de Amara.org 371 01:30:15,460 --> 01:30:18,460 Subtítulos por la comunidad de Amara.org 372 01:30:45,460 --> 01:30:48,460 Subtítulos por la comunidad de Amara.org 373 01:31:15,460 --> 01:31:19,460 Subtítulos por la comunidad de Amara.org 374 01:31:45,460 --> 01:31:49,460 Subtítulos por la comunidad de Amara.org 375 01:32:15,460 --> 01:32:18,460 Subtítulos por la comunidad de Amara.org 376 01:32:45,460 --> 01:32:48,460 Subtítulos por la comunidad de Amara.org 377 01:33:15,460 --> 01:33:18,460 Subtítulos por la comunidad de Amara.org 378 01:33:45,460 --> 01:33:48,460 Subtítulos por la comunidad de Amara.org 379 01:34:15,460 --> 01:34:18,460 Subtítulos por la comunidad de Amara.org 380 01:34:45,460 --> 01:34:48,460 Subtítulos por la comunidad de Amara.org 381 01:35:15,460 --> 01:35:18,460 Subtítulos por la comunidad de Amara.org 382 01:35:45,460 --> 01:35:48,460 Subtítulos por la comunidad de Amara.org 383 01:36:15,460 --> 01:36:18,460 Subtítulos por la comunidad de Amara.org 384 01:36:45,460 --> 01:36:48,460 Subtítulos por la comunidad de Amara.org 385 01:37:15,460 --> 01:37:18,460 Subtítulos por la comunidad de Amara.org 386 01:37:45,460 --> 01:37:48,460 Subtítulos por la comunidad de Amara.org 387 01:38:15,460 --> 01:38:18,460 Subtítulos por la comunidad de Amara.org 388 01:38:45,460 --> 01:38:48,460 Subtítulos por la comunidad de Amara.org 389 01:39:15,460 --> 01:39:18,460 Subtítulos por la comunidad de Amara.org 390 01:39:45,460 --> 01:39:49,460 Subtítulos por la comunidad de Amara.org 391 01:40:15,460 --> 01:40:18,460 Subtítulos por la comunidad de Amara.org 392 01:40:45,460 --> 01:40:48,460 Subtítulos por la comunidad de Amara.org 393 01:41:15,460 --> 01:41:18,460 Subtítulos por la comunidad de Amara.org 394 01:41:45,460 --> 01:41:49,460 Subtítulos por la comunidad de Amara.org 395 01:42:15,460 --> 01:42:18,460 Subtítulos por la comunidad de Amara.org 396 01:42:45,460 --> 01:42:48,460 Subtítulos por la comunidad de Amara.org 397 01:43:15,460 --> 01:43:18,460 Subtítulos por la comunidad de Amara.org 398 01:43:45,460 --> 01:43:48,460 Subtítulos por la comunidad de Amara.org 399 01:44:15,460 --> 01:44:18,460 Subtítulos por la comunidad de Amara.org 400 01:44:45,460 --> 01:44:48,460 Subtítulos por la comunidad de Amara.org 401 01:45:15,460 --> 01:45:21,460 Conocemos todas las funciones y qué es un parámetro y cómo pasárselo. 402 01:45:21,460 --> 01:45:27,460 Entonces tenemos un diccionario armario que lo tenemos aquí abajo, 403 01:45:27,460 --> 01:45:33,460 en el que tenemos pantalones con su talla y el color. 404 01:45:33,460 --> 01:45:38,460 Entonces lo que vamos a hacer es lo siguiente. 405 01:45:38,460 --> 01:45:43,460 Tenemos la estructura clave valor, queremos implementar una función que añada la ropa 406 01:45:43,460 --> 01:45:48,460 que pasemos como parámetros, el nombre, talla y color. 407 01:45:48,460 --> 01:45:54,460 Por defecto el color va a ser negro, es una persona que le gusta la ropa oscura, 408 01:45:54,460 --> 01:46:00,460 entonces vamos a poner el valor por defecto. 409 01:46:00,460 --> 01:46:06,460 Se devolverán dos parámetros, un booleano, que indica si todo ha ido bien en el proceso 410 01:46:06,460 --> 01:46:13,460 y los detalles, qué ha pasado, qué ha sucedido. 411 01:46:13,460 --> 01:46:20,460 Casuísticas que queremos contemplar, si algún campo está vacío devolveremos false, 412 01:46:20,460 --> 01:46:27,460 en el booleano devolveremos un false y el texto, algún campo está vacío. 413 01:46:28,460 --> 01:46:36,460 Si existe la prenda que queremos añadir, entonces devolveremos false, 414 01:46:36,460 --> 01:46:40,460 la prenda ya está en el armario, pero tienen que cumplirse las tres condiciones 415 01:46:40,460 --> 01:46:45,460 que exista en esta clave, en la clave pantalones, 416 01:46:45,460 --> 01:46:48,460 que sea la misma talla y el mismo color. 417 01:46:48,460 --> 01:46:53,460 Tienen que cumplirse estas tres condiciones. 418 01:46:53,460 --> 01:47:00,460 Porque claro, si la talla es distinta o si el color es distinto, ya por tanto cambia. 419 01:47:00,460 --> 01:47:07,460 Y si no existe, la creamos, añadimos un nuevo elemento. 420 01:47:07,460 --> 01:47:10,460 Este como primer ejercicio. 421 01:47:10,460 --> 01:47:22,460 Y luego como segundo ejercicio, os he añadido unas pequeñas pautas, 422 01:47:22,460 --> 01:47:27,460 pero tampoco os sintáis obligados a hacerlo. 423 01:47:27,460 --> 01:47:33,460 Esto, sobre todo este ejercicio, lo veo más útil para los chavales. 424 01:47:33,460 --> 01:47:39,460 Este ejercicio de poder encriptar información de manera sencilla, 425 01:47:39,460 --> 01:47:43,460 yo creo que les va a atraer mucho y por eso os lo he dejado aquí, 426 01:47:43,460 --> 01:47:48,460 porque creo que va a captar la atención de los alumnos 427 01:47:48,460 --> 01:47:52,460 y si en algún momento lo queréis utilizar por algo, 428 01:47:52,460 --> 01:48:00,460 este ejercicio creo yo personalmente que va a atraer bastante. 429 01:48:00,460 --> 01:48:06,460 Es crear una función que encripte el texto que le pasemos por parámetro. 430 01:48:06,460 --> 01:48:11,460 Para ello tenemos una función que permite pasarle un texto 431 01:48:11,460 --> 01:48:15,460 y devuelva el texto encriptado. 432 01:48:15,460 --> 01:48:20,460 Aquí os explico que vamos a utilizar la encriptación CESAR, 433 01:48:20,460 --> 01:48:23,460 que consiste en lo que vemos aquí en la imagen, 434 01:48:23,460 --> 01:48:28,460 en convertir la A en una D en este caso, 435 01:48:28,460 --> 01:48:31,460 pero vamos a hacer nada más de un valor. 436 01:48:31,460 --> 01:48:35,460 La A sería la B, la B la C y así sucesivamente. 437 01:48:35,460 --> 01:48:39,460 Entonces vamos a tener que ir recorriendo el texto. 438 01:48:39,460 --> 01:48:48,460 Recorremos la frase que le hemos pasado por parámetro, 439 01:48:48,460 --> 01:48:52,460 vamos a ir recorriendo carácter a carácter y vamos a ir sumándole 1. 440 01:48:52,460 --> 01:48:54,460 ¿Cómo sumamos 1? 441 01:48:54,460 --> 01:48:59,460 Pues resulta que, os lo añado aquí en el comodín, 442 01:48:59,460 --> 01:49:02,460 todos los caracteres en verdad son números, 443 01:49:02,460 --> 01:49:05,460 están representados en una tabla así. 444 01:49:05,460 --> 01:49:10,460 Entonces, por ejemplo, el espacio sería el número 32. 445 01:49:10,460 --> 01:49:15,460 Entonces tenemos que saber cómo cambiar de un carácter al número 446 01:49:15,460 --> 01:49:18,460 y el número al carácter. 447 01:49:18,460 --> 01:49:24,460 De esta manera, y por eso se han añadido aquí las funciones. 448 01:49:24,460 --> 01:49:30,460 ORD, la función ORD, le pasamos por parámetro el carácter 449 01:49:30,460 --> 01:49:36,460 y nos devolverá el número decimal. 450 01:49:36,460 --> 01:49:42,460 Luego CHR hará el proceso inverso, de número a carácter. 451 01:49:42,460 --> 01:49:46,460 Entonces el ejercicio es ir recorriendo esa frase, 452 01:49:46,460 --> 01:49:51,460 cambiar carácter a carácter, ir guardándolo 453 01:49:51,460 --> 01:49:56,460 y cambiándolo por 1 a la derecha. 454 01:49:57,460 --> 01:50:01,460 Lo que sería sumarle 1 a este decimal. 455 01:50:01,460 --> 01:50:05,460 Si, por ejemplo, le metemos en la cadena el carácter 4, 456 01:50:05,460 --> 01:50:09,460 que lo cambie por el carácter 5, de esta manera. 457 01:50:09,460 --> 01:50:12,460 Sumamos 1, 52 a 53. 458 01:50:12,460 --> 01:50:15,460 Os voy a dejar 10 minutines para que hagáis el ejercicio. 459 01:50:15,460 --> 01:50:19,460 Y os digo, este, si os lo veis muy complicado, no pasa nada. 460 01:50:19,460 --> 01:50:22,460 Ya os lo explico yo luego. 461 01:50:22,460 --> 01:50:27,460 Así que nada, os dejo 10 minutines y hacéis los ejercicios. 462 01:50:52,460 --> 01:50:56,460 Subtítulos realizados por la comunidad de Amara.org 463 01:51:22,460 --> 01:51:25,460 Subtítulos realizados por la comunidad de Amara.org 464 01:51:52,460 --> 01:51:55,460 Subtítulos realizados por la comunidad de Amara.org 465 01:52:22,460 --> 01:52:25,460 Subtítulos realizados por la comunidad de Amara.org 466 01:52:52,460 --> 01:52:55,460 Subtítulos realizados por la comunidad de Amara.org 467 01:53:22,460 --> 01:53:25,460 Subtítulos realizados por la comunidad de Amara.org 468 01:53:52,460 --> 01:53:56,460 Subtítulos realizados por la comunidad de Amara.org 469 01:54:22,460 --> 01:54:26,460 Subtítulos realizados por la comunidad de Amara.org 470 01:54:52,460 --> 01:54:55,460 Subtítulos realizados por la comunidad de Amara.org 471 01:55:22,460 --> 01:55:25,460 Subtítulos realizados por la comunidad de Amara.org 472 01:55:52,460 --> 01:55:55,460 Subtítulos realizados por la comunidad de Amara.org 473 01:56:22,460 --> 01:56:25,460 Subtítulos realizados por la comunidad de Amara.org 474 01:56:52,460 --> 01:56:56,460 Subtítulos realizados por la comunidad de Amara.org 475 01:57:22,460 --> 01:57:25,460 Subtítulos realizados por la comunidad de Amara.org 476 01:57:52,460 --> 01:57:56,460 Subtítulos realizados por la comunidad de Amara.org 477 01:58:22,460 --> 01:58:25,460 Subtítulos realizados por la comunidad de Amara.org 478 01:58:52,460 --> 01:58:56,460 Subtítulos realizados por la comunidad de Amara.org 479 01:59:22,460 --> 01:59:25,460 Subtítulos realizados por la comunidad de Amara.org 480 01:59:52,460 --> 01:59:55,460 Subtítulos realizados por la comunidad de Amara.org 481 02:00:22,460 --> 02:00:25,460 Subtítulos realizados por la comunidad de Amara.org 482 02:00:52,460 --> 02:00:55,460 Subtítulos realizados por la comunidad de Amara.org 483 02:01:22,460 --> 02:01:25,460 Subtítulos realizados por la comunidad de Amara.org 484 02:01:52,460 --> 02:01:55,460 Subtítulos realizados por la comunidad de Amara.org 485 02:02:22,460 --> 02:02:25,460 Subtítulos realizados por la comunidad de Amara.org 486 02:02:52,460 --> 02:02:55,460 Subtítulos realizados por la comunidad de Amara.org 487 02:03:22,460 --> 02:03:25,460 Subtítulos realizados por la comunidad de Amara.org 488 02:03:52,460 --> 02:03:55,460 Subtítulos realizados por la comunidad de Amara.org 489 02:04:22,460 --> 02:04:25,460 Subtítulos realizados por la comunidad de Amara.org 490 02:04:52,460 --> 02:04:55,460 Subtítulos realizados por la comunidad de Amara.org 491 02:05:22,460 --> 02:05:25,460 Subtítulos realizados por la comunidad de Amara.org 492 02:05:52,460 --> 02:05:55,460 Subtítulos realizados por la comunidad de Amara.org 493 02:06:22,460 --> 02:06:25,460 Subtítulos realizados por la comunidad de Amara.org 494 02:06:52,460 --> 02:06:55,460 Subtítulos realizados por la comunidad de Amara.org 495 02:07:22,460 --> 02:07:25,460 Subtítulos realizados por la comunidad de Amara.org 496 02:07:52,460 --> 02:07:55,460 Subtítulos realizados por la comunidad de Amara.org 497 02:08:22,460 --> 02:08:25,460 Subtítulos realizados por la comunidad de Amara.org 498 02:08:52,460 --> 02:08:55,460 Subtítulos realizados por la comunidad de Amara.org 499 02:09:22,460 --> 02:09:25,460 Subtítulos realizados por la comunidad de Amara.org 500 02:09:52,460 --> 02:09:54,460 Pantalones 501 02:10:03,460 --> 02:10:05,460 Un XL 502 02:10:07,460 --> 02:10:09,460 Y va a ser azul 503 02:10:22,460 --> 02:10:24,460 Y va a ser azul 504 02:10:28,460 --> 02:10:31,460 No sé por qué es igual a color 505 02:10:31,460 --> 02:10:35,460 No, lo que estamos es estableciendo la nueva talla 506 02:10:35,460 --> 02:10:41,460 Porque ya estamos viendo que si no se ha cumplido ninguna de estas condiciones 507 02:10:41,460 --> 02:10:47,460 O sea, si no existe, en el caso de que no exista, la añadimos 508 02:10:47,460 --> 02:10:54,460 Entonces, para añadir algo, lo que hacemos es crear el nuevo, talla 509 02:10:54,460 --> 02:10:59,460 Lo que nos pasen por parámetro, el texto, se añadirá al diccionario 510 02:10:59,460 --> 02:11:01,460 Pasarás y lo veremos ahora, mira 511 02:11:01,460 --> 02:11:04,460 Si creo pantalones ya existe, vale 512 02:11:04,460 --> 02:11:09,460 Va a entrar en esta función y va a decirle talla 513 02:11:09,460 --> 02:11:11,460 Esta condición no se va a cumplir 514 02:11:11,460 --> 02:11:14,460 En pantalones no hay un XL 515 02:11:14,460 --> 02:11:18,460 No hay una clave XL, con lo cual aquí no va a entrar, vale 516 02:11:18,460 --> 02:11:20,460 Va a entrar aquí en el else 517 02:11:20,460 --> 02:11:25,460 Si no se ha cumplido algo de aquí, entonces se mete aquí 518 02:11:25,460 --> 02:11:30,460 Añade la talla y le asigna el color, vale 519 02:11:32,460 --> 02:11:34,460 Por último 520 02:11:38,460 --> 02:11:40,460 Print 521 02:11:40,460 --> 02:11:42,460 Juliano 522 02:11:42,460 --> 02:11:44,460 Print 523 02:11:44,460 --> 02:11:46,460 Detalles 524 02:11:46,460 --> 02:11:48,460 Lo verás ahora mismo 525 02:11:48,460 --> 02:11:52,460 Primero cargamos armario 526 02:11:52,460 --> 02:11:55,460 True, la pregunta está añadida 527 02:11:58,460 --> 02:12:02,460 Nos hemos equivocado y le hemos pasado una variable vacía 528 02:12:02,460 --> 02:12:06,460 Pues, false, algún campo está vacío 529 02:12:07,460 --> 02:12:14,460 Por ejemplo, imaginaos que hemos pasado algo que no es falda 530 02:12:14,460 --> 02:12:17,460 No es falda azul, vale 531 02:12:17,460 --> 02:12:19,460 Entonces 532 02:12:20,460 --> 02:12:22,460 True, la pregunta está añadida 533 02:12:22,460 --> 02:12:24,460 Vamos a ver la salida 534 02:12:25,460 --> 02:12:27,460 Print 535 02:12:27,460 --> 02:12:29,460 Vale 536 02:12:29,460 --> 02:12:31,460 Y armario 537 02:12:36,460 --> 02:12:38,460 Vale, entonces ahora tendríamos pantalones 538 02:12:38,460 --> 02:12:43,460 Tendríamos una S, negro, un XL, azul 539 02:12:43,460 --> 02:12:48,460 Una falda, que es la nueva que hemos añadido, XL, azul 540 02:12:50,460 --> 02:12:52,460 Vale 541 02:12:54,460 --> 02:12:56,460 Este sería el primer ejercicio 542 02:12:56,460 --> 02:12:58,460 El segundo 543 02:13:00,460 --> 02:13:02,460 Vamos a ver 544 02:13:03,460 --> 02:13:05,460 Vale 545 02:13:05,460 --> 02:13:08,460 Entonces vamos a crear la función tef 546 02:13:10,460 --> 02:13:12,460 Encriptar 547 02:13:12,460 --> 02:13:15,460 Tenemos que pasar un texto 548 02:13:16,460 --> 02:13:19,460 Dos puntos, vale 549 02:13:19,460 --> 02:13:24,460 Entonces, por una parte, vamos a guardar el result 550 02:13:24,460 --> 02:13:27,460 Vamos a tenerlo ya almacenado 551 02:13:27,460 --> 02:13:29,460 Result 552 02:13:30,460 --> 02:13:32,460 Cadena vacía, tenemos ahí 553 02:13:32,460 --> 02:13:35,460 Y luego vamos a ir añadiendole, vale 554 02:13:38,460 --> 02:13:42,460 Perfecto, entonces vamos a recorrer el texto 555 02:13:42,460 --> 02:13:44,460 For 556 02:13:44,460 --> 02:13:46,460 Indice 557 02:13:46,460 --> 02:13:47,460 In 558 02:13:47,460 --> 02:13:49,460 Range 559 02:13:49,460 --> 02:13:51,460 Len, el tamaño 560 02:13:51,460 --> 02:13:54,460 Vamos a recorrer el tamaño 561 02:13:54,460 --> 02:13:56,460 Tamaño del texto 562 02:13:56,460 --> 02:13:57,460 Abre 563 02:13:57,460 --> 02:13:58,460 Texto 564 02:13:58,460 --> 02:13:59,460 Cierra, cierra 565 02:13:59,460 --> 02:14:00,460 Y 566 02:14:00,460 --> 02:14:02,460 Así 567 02:14:02,460 --> 02:14:04,460 Vale 568 02:14:04,460 --> 02:14:06,460 Vamos a ir recorriendo, entonces 569 02:14:06,460 --> 02:14:08,460 Texto 570 02:14:09,460 --> 02:14:13,460 Vamos a guardar una variable para que nos quede un poco más clara 571 02:14:13,460 --> 02:14:15,460 Carácter 572 02:14:15,460 --> 02:14:16,460 Es igual a 573 02:14:16,460 --> 02:14:18,460 Texto 574 02:14:19,460 --> 02:14:20,460 Índice 575 02:14:20,460 --> 02:14:22,460 Lo vamos a pasar por ahí 576 02:14:22,460 --> 02:14:26,460 Entonces aquí ya vamos a ir recorriendo el índice, vale 577 02:14:28,460 --> 02:14:30,460 Carácter 578 02:14:34,460 --> 02:14:36,460 Para poder verlo bien 579 02:14:36,460 --> 02:14:39,460 Vamos a ponerlo aquí, carácter 580 02:14:39,460 --> 02:14:41,460 Imprimir el carácter 581 02:14:46,460 --> 02:14:50,460 Vamos a hacerlo mejor, para que quede más claro 582 02:14:51,460 --> 02:14:53,460 Vamos a ponerle 583 02:14:55,460 --> 02:14:57,460 La letra 584 02:14:58,460 --> 02:15:00,460 Espacio 585 02:15:00,460 --> 02:15:02,460 Más carácter 586 02:15:07,460 --> 02:15:11,460 Se transforma en 587 02:15:11,460 --> 02:15:13,460 Ramos 588 02:15:15,460 --> 02:15:17,460 Vale 589 02:15:19,460 --> 02:15:21,460 Vamos a hacer aquí el 590 02:15:21,460 --> 02:15:23,460 chr 591 02:15:23,460 --> 02:15:26,460 Este es el que convertía el número 592 02:15:27,460 --> 02:15:31,460 El número en carácter, vale 593 02:15:32,460 --> 02:15:35,460 Dentro vamos a hacer la transformación 594 02:15:35,460 --> 02:15:37,460 El ORD 595 02:15:38,460 --> 02:15:39,460 Vale 596 02:15:39,460 --> 02:15:41,460 del carácter 597 02:15:41,460 --> 02:15:43,460 Carácter más uno 598 02:15:45,460 --> 02:15:48,460 Lo estoy haciendo en una línea pero podría haberlo hecho en varias, vale 599 02:15:48,460 --> 02:15:50,460 Podemos hacerlo aquí, mira 600 02:15:52,460 --> 02:15:54,460 Vamos a llamar carácter 601 02:15:55,460 --> 02:15:57,460 Encriptado 602 02:15:58,460 --> 02:16:00,460 Vale, o modificado 603 02:16:00,460 --> 02:16:02,460 Mod carácter 604 02:16:03,460 --> 02:16:05,460 Modificado 605 02:16:05,460 --> 02:16:07,460 Vale 606 02:16:07,460 --> 02:16:09,460 Cogemos este 607 02:16:09,460 --> 02:16:11,460 La transformación 608 02:16:11,460 --> 02:16:14,460 Las dos paréntesis importantes 609 02:16:16,460 --> 02:16:20,460 De esta manera obtenemos el carácter modificado, se transforma en 610 02:16:21,460 --> 02:16:23,460 Carácter 611 02:16:23,460 --> 02:16:25,460 Más 612 02:16:25,460 --> 02:16:27,460 Carácter 613 02:16:27,460 --> 02:16:29,460 Modificado 614 02:16:30,460 --> 02:16:31,460 Vale 615 02:16:31,460 --> 02:16:34,460 Hasta aquí, hasta aquí la línea 616 02:16:34,460 --> 02:16:37,460 Y vamos a añadirlo al resultado 617 02:16:37,460 --> 02:16:39,460 Entonces result 618 02:16:39,460 --> 02:16:41,460 Más igual 619 02:16:43,460 --> 02:16:45,460 Carácter 620 02:16:45,460 --> 02:16:47,460 Modificado 621 02:16:47,460 --> 02:16:49,460 Result 622 02:16:53,460 --> 02:16:55,460 Result 623 02:16:58,460 --> 02:17:00,460 Salimos de la tabulación una 624 02:17:00,460 --> 02:17:03,460 Para decir cuando termine el FOR 625 02:17:03,460 --> 02:17:05,460 RETURN 626 02:17:05,460 --> 02:17:07,460 Result, vale 627 02:17:10,460 --> 02:17:12,460 Muy bien 628 02:17:13,460 --> 02:17:15,460 Imprimimos 629 02:17:15,460 --> 02:17:17,460 Bueno, hacemos la llamada 630 02:17:18,460 --> 02:17:20,460 Texto 631 02:17:21,460 --> 02:17:23,460 Encriptado 632 02:17:28,460 --> 02:17:30,460 Encriptar 633 02:17:31,460 --> 02:17:33,460 Y le pasamos el texto 634 02:17:36,460 --> 02:17:38,460 Esto igual 635 02:17:38,460 --> 02:17:40,460 Esto es un 636 02:17:40,460 --> 02:17:42,460 Secreto 637 02:17:42,460 --> 02:17:44,460 Vale 638 02:17:45,460 --> 02:17:47,460 Texto 639 02:17:49,460 --> 02:17:51,460 Print 640 02:17:53,460 --> 02:17:55,460 Texto 641 02:17:55,460 --> 02:17:57,460 Encriptado 642 02:17:59,460 --> 02:18:01,460 A ver si ha ido todo bien 643 02:18:04,460 --> 02:18:06,460 Vale, print 644 02:18:06,460 --> 02:18:08,460 Siempre se me olvida cerrarlo 645 02:18:10,460 --> 02:18:12,460 Y más 646 02:18:12,460 --> 02:18:14,460 Encriptado 647 02:18:14,460 --> 02:18:16,460 Concatenar 648 02:18:20,460 --> 02:18:22,460 Print 649 02:18:40,460 --> 02:18:42,460 Print 650 02:18:42,460 --> 02:18:44,460 Texto 651 02:18:44,460 --> 02:18:46,460 Encriptado 652 02:18:46,460 --> 02:18:48,460 Print 653 02:18:48,460 --> 02:18:50,460 Texto 654 02:18:50,460 --> 02:18:52,460 Encriptado 655 02:18:54,460 --> 02:18:56,460 Print 656 02:19:00,460 --> 02:19:02,460 Print 657 02:19:02,460 --> 02:19:04,460 Texto 658 02:19:04,460 --> 02:19:06,460 Encriptado 659 02:19:06,460 --> 02:19:08,460 Print 660 02:19:08,460 --> 02:19:10,460 Print 661 02:19:12,460 --> 02:19:14,460 Texto 662 02:19:14,460 --> 02:19:16,460 Encriptado 663 02:19:16,460 --> 02:19:18,460 Print 664 02:19:18,460 --> 02:19:20,460 Texto 665 02:19:20,460 --> 02:19:22,460 Encriptado 666 02:19:22,460 --> 02:19:24,460 Print 667 02:19:28,460 --> 02:19:30,460 Texto 668 02:19:30,460 --> 02:19:32,460 Encriptado 669 02:19:32,460 --> 02:19:34,460 Print 670 02:19:34,460 --> 02:19:36,460 Texto 671 02:19:36,460 --> 02:19:38,460 Print 672 02:19:40,460 --> 02:19:42,460 Print 673 02:19:42,460 --> 02:19:44,460 Print 674 02:19:44,460 --> 02:19:46,460 Print 675 02:19:46,460 --> 02:19:48,460 Print 676 02:19:48,460 --> 02:19:50,460 Print 677 02:19:50,460 --> 02:19:52,480 Print 678 02:19:52,480 --> 02:19:54,460 Print 679 02:19:54,460 --> 02:19:56,460 Print 680 02:19:56,460 --> 02:19:58,460 Print 681 02:19:58,460 --> 02:20:00,460 Print 682 02:20:00,460 --> 02:20:02,460 Print 683 02:20:02,460 --> 02:20:04,460 Print 684 02:20:04,460 --> 02:20:06,460 Print 685 02:20:06,460 --> 02:20:08,460 Print 686 02:20:08,460 --> 02:20:10,460 Print 687 02:20:10,460 --> 02:20:12,460 Print 688 02:20:12,460 --> 02:20:14,460 Print 689 02:20:14,460 --> 02:20:16,460 Print 690 02:20:16,460 --> 02:20:18,460 Print 691 02:20:18,460 --> 02:20:20,460 Print 692 02:20:20,460 --> 02:20:22,460 Print 693 02:20:22,460 --> 02:20:24,460 Print 694 02:20:24,460 --> 02:20:26,460 Print 695 02:20:26,460 --> 02:20:28,460 Print 696 02:20:28,460 --> 02:20:30,460 Print 697 02:20:30,460 --> 02:20:32,460 Print 698 02:20:32,460 --> 02:20:34,460 Print 699 02:20:36,460 --> 02:20:38,460 Print 700 02:20:38,460 --> 02:20:40,460 Print 701 02:20:40,460 --> 02:20:42,460 Print 702 02:20:42,460 --> 02:20:44,460 Print 703 02:20:44,460 --> 02:20:46,460 Print 704 02:20:46,460 --> 02:20:48,460 Print 705 02:20:48,460 --> 02:20:49,460 Print 706 02:20:49,460 --> 02:20:50,460 Print 707 02:20:58,460 --> 02:21:00,460 Print 708 02:21:00,460 --> 02:21:10,460 Funciones, argumentos, parámetros, módulos 709 02:21:30,460 --> 02:21:55,460 Módulos son maneras de externalizar el código por ficheros 710 02:21:55,460 --> 02:22:11,460 Lo que conseguimos es sacar el código en otros ficheros y por tanto simplemente en el caso de que necesitemos una funcionalidad o algo, lo que haremos será hacer un import 711 02:22:11,460 --> 02:22:30,460 Accedemos a ese código entero, podemos hacer un import, por ejemplo existe el módulo JSON, este que veis aquí, entonces lo que haremos será un import JSON 712 02:22:30,460 --> 02:22:55,460 JSON es un formato muy similar al visto en los diccionarios porque trabaja con clave valor y es un formato muy común dentro de la informática 713 02:22:55,460 --> 02:23:12,460 Y bueno, es simplemente una explicación para ver que hay código que existe fuera de no solamente lo que hemos programado nosotros en nuestro fichero 714 02:23:12,460 --> 02:23:23,460 Hay funcionalidad extra a la que podemos acceder, hay librerías externas y librerías internas, las librerías internas por ejemplo en el caso de JSON 715 02:23:24,460 --> 02:23:41,460 Y otra manera de acceder, porque por ejemplo podemos hacer un import JSON o podemos hacer, dentro del JSON hay una función, lo que hemos visto hasta ahora es una función que se llama DUMPS 716 02:23:41,460 --> 02:24:00,460 Pues esta función lo que hace es serializar el objeto en un JSON, serializar el diccionario en un formato JSON, lo que nos generaría sería una estructura muy similar al diccionario pero estructurada y demás 717 02:24:00,460 --> 02:24:27,460 Sí, os lo he explicado un poco más abajo, tenéis aquí la dirección para si queréis consultar un poco más, simplemente ya os digo, JSON es un ejemplo, hay muchísimos más, hay MA, pero también hay IMPORT, MAG que también nos permite hacer operaciones 718 02:24:27,460 --> 02:24:50,460 Otro ejemplo, luego lo veremos, no hay ningún problema, entonces para que lo veáis, el código nosotros no lo vemos, pero si queremos consultar algo lo que haremos será irnos a la dirección que vimos aquí, que es la documentación oficial de Python 719 02:24:50,460 --> 02:25:18,460 Y dentro de esa, las librerías JSON, y en el código lo que veremos será esto, si lo reconocéis, esto es DER, DUMPS, y luego le vamos a pasar parámetros, asterisco que significa un sinfín de parámetros, se lo podemos pasar por aquí 720 02:25:18,460 --> 02:25:36,460 Y hace cosas específicas y luego le estipula por aquí los diferentes parámetros por defecto, si queremos saltarnos la aquí, miles de funcionalidades, no nos vamos a meter en ellas la verdad 721 02:25:36,460 --> 02:26:01,460 La única que he considerado importante es la de INTENT, ya que nos permite hacer una tabulación de los elementos, de manera que se vean de manera bonita, es como cuando se le ha puesto el diccionario del armario, verlo así de bonito, porque cuando nosotros imprimimos, está aquí tabulado 722 02:26:01,460 --> 02:26:22,460 Y luego cuando lo imprimimos queda así de feo, JSON es lo mismo, es un diccionario, pero está tabulado y demás, entonces para ello lo que haremos será este ejemplo, el de importar un JSON, importar la librería JSON 723 02:26:23,460 --> 02:26:39,460 Y una vez ya la tenemos cargada, lo que haremos será imprimir, nos va a convertir DUMPS, nos convertirá el armario, le estamos pasando el armario como un parámetro, objeto este 724 02:26:39,460 --> 02:27:03,460 Y le estamos diciendo, oye, añádeme una tabulación de 4, y se muestra así de bonito, aquí está metiendo 4 espacios, está convirtiendo el diccionario en un texto, esto es lo que saca por pantalla, es un texto, así con esta estructura 725 02:27:04,460 --> 02:27:21,460 Es simplemente para que lo tengáis en cuenta, no he ahondado más en ello, porque para ello habría que profundizar más en este área, es muy amplio 726 02:27:22,460 --> 02:27:41,460 Tenemos también los paquetes, si crece mucho la funcionalidad JSON por ejemplo, imaginaos que tiene varios ficheros, con muchísimas funciones, os lo he puesto a modo de ejemplo con lo del armario 727 02:27:41,460 --> 02:27:59,460 Supongamos que el número de ficheros aumenta extensiblemente y tenemos varios módulos y queremos ser ordenados, vamos a crear un paquete que se llame armario y dentro módulos que son realmente ficheros 728 02:27:59,460 --> 02:28:21,460 Los módulos realmente son ficheros, como aquí arriba sería el fichero JSON.py en el que tenemos toda esta información, pues tendríamos gestión de zapatos, gestión de cinturones, calcetines, faldas, imaginaos que es un armario y una gestión brutal del código 729 02:28:21,460 --> 02:28:36,460 Es una manera de tenerlo organizado y de acceder a esa información, a esa implementación, ese código de manera ordenada 730 02:28:36,460 --> 02:28:50,460 Vamos a crear una carpeta, todo esto lo va a hacer este código de aquí abajo, lo tenéis que ejecutar una única vez 731 02:28:50,460 --> 02:29:13,460 Lo que va a hacer es, aquí a la izquierda tenemos una carpetita y una vez ya ejecutemos este código nos va a crear una carpeta llamada pkg y dentro un fichero que hemos llamado operaciones.py 732 02:29:14,460 --> 02:29:21,460 Este fichero le podéis dar doble clic y veréis que tenemos aquí dos funciones 733 02:29:21,460 --> 02:29:46,460 No os preocupéis por este código, si queréis os lo explico, pero es simplemente para crear, digamos que esto sería una manera de crear código, crear un entorno estable dentro de vuestro Jupyter 734 02:29:46,460 --> 02:30:06,460 En el que hemos creado una carpeta hemos utilizado la librería os y hemos llamado a la función mkdir, mkdir lo que hace es crear una carpeta con el nombre que nosotros le pasamos por parámetro, pkg 735 02:30:06,460 --> 02:30:24,460 Lo que hemos hecho es eso, y luego posteriormente, esto es un poco más avanzado, pero esto lo que hace es crear un fichero, escribir un fichero con el nombre que nosotros le pasemos, esta es la ruta específica de Jupyter 736 02:30:24,460 --> 02:30:36,460 para acceder, barra, drive, barra, esto es un poco técnico, pero bueno, para que lo entendáis, nunca está mal 737 02:30:36,460 --> 02:30:58,460 Luego el with es una palabra reservada que lo que hace es, mantiene abierto algo, hace una operación de open, la mantiene abierta, ese fichero lo mantiene abierto, le estamos diciendo, ábreme este fichero en modo escribir con este nombre 738 02:30:58,460 --> 02:31:24,460 El as lo que hace es, digamos, hacer una especie de alias, entonces el fichero, el nombre con el que nos vamos a referir al fichero, file, le vamos a realizar la acción de write, el módulo write nos va a escribir en el fichero, nos va a añadir todo el texto que hemos visto aquí 739 02:31:24,460 --> 02:31:28,460 Esto es un poco técnico, ya os digo, pero bueno, que lo sigáis