1 00:00:05,620 --> 00:00:24,100 Bien, hola a todos, vamos a analizar un programa escrito en Python, de manera que nos sirva de repaso para estudiar las diferentes estructuras de programación que contiene este lenguaje de programación, visto sobre un programa que realice, en este caso, una aplicación concreta. 2 00:00:24,100 --> 00:00:32,240 en este caso la aplicación es muy sencilla y la tenéis escrita aquí arriba 3 00:00:32,240 --> 00:00:34,219 donde tenéis aquí la cabecera del programa 4 00:00:34,219 --> 00:00:39,579 ya sabéis que cuando está entre amadillas no se tiene en cuenta 5 00:00:39,579 --> 00:00:44,920 y en este caso consiste en una aplicación que nos va a servir para realizar las anotaciones 6 00:00:44,920 --> 00:00:47,280 que un jugador de baloncesto realiza durante un partido 7 00:00:47,280 --> 00:00:51,859 y luego además mostrar la estadística de las anotaciones de ese jugador 8 00:00:51,859 --> 00:00:53,539 entonces, bueno, lo que está claro 9 00:00:53,539 --> 00:00:55,740 que el jugador va a anotar 10 00:00:55,740 --> 00:00:58,259 canastas de 3 puntos, de 2 puntos y de 1 11 00:00:58,259 --> 00:01:00,060 ¿vale? entonces, bueno, pues 12 00:01:00,060 --> 00:01:02,299 el programa nos va a solicitar los siguientes datos 13 00:01:02,299 --> 00:01:03,579 a medida que se está produciendo el 14 00:01:03,579 --> 00:01:06,159 partido, pues el juez, en este caso de la mesa 15 00:01:06,159 --> 00:01:07,700 pues va a ir anotando para ese jugador 16 00:01:07,700 --> 00:01:10,219 canastas de 3 puntos, de 2 puntos y de 1 punto 17 00:01:10,219 --> 00:01:11,840 cuando termine el partido 18 00:01:11,840 --> 00:01:13,739 o sencillamente el jugador ya haya terminado 19 00:01:13,739 --> 00:01:15,599 porque se haya expulsado o lo que sea 20 00:01:15,599 --> 00:01:17,480 pues con el valor 0 21 00:01:17,480 --> 00:01:19,420 salimos ya de introducir los valores 22 00:01:19,420 --> 00:01:21,319 de las anotaciones de este jugador 23 00:01:21,319 --> 00:01:25,239 si se introduce cualquier otro valor que no sean estos evidentemente tiene que 24 00:01:25,239 --> 00:01:29,719 mostrar un mensaje de error y por último la estadística debe 25 00:01:29,719 --> 00:01:33,819 mostrar nombre del jugador los puntos totales obtenidos en el partido las 26 00:01:33,819 --> 00:01:38,939 canastas que han gestado y los tiros de diferentes tipos de las diferentes tipos 27 00:01:38,939 --> 00:01:43,760 de canastas de 3 de 2 o de un punto vale pues entonces en primer lugar bueno lo 28 00:01:43,760 --> 00:01:48,620 que he hecho ha sido dividir digamos el programa como veis aquí en los con los 29 00:01:48,620 --> 00:01:53,040 asteriscos en pequeños subprogramas que nos va a ir diciendo las funciones que tiene cada una de ellas. 30 00:01:53,480 --> 00:01:58,599 Y esto además lo enlazo con el tema de funciones, que es la última parte que vamos a ver de Python, 31 00:01:59,040 --> 00:02:04,159 en la que programas grandes los vamos a tener pequeños, programas más pequeñitos, llamadas funciones, 32 00:02:04,599 --> 00:02:09,639 y que nos van a permitir que un programa muy largo al final se quede descompuesto en subprogramas más pequeños. 33 00:02:09,639 --> 00:02:13,659 Bueno, vamos primero con el programa en sí. 34 00:02:13,659 --> 00:02:16,979 la presentación inicial simplemente es una función print 35 00:02:16,979 --> 00:02:21,400 donde además introducimos en este caso el nombre del jugador 36 00:02:21,400 --> 00:02:23,360 en la variable nombreJugador 37 00:02:23,360 --> 00:02:28,860 y después ya vamos a ir introduciendo los diferentes valores 38 00:02:28,860 --> 00:02:31,120 entonces para anotar esos valores 39 00:02:31,120 --> 00:02:34,240 que los vamos a introducir evidentemente en una lista llamada anotaciones 40 00:02:34,240 --> 00:02:35,900 creamos la lista anotaciones 41 00:02:35,900 --> 00:02:38,740 y le pedimos al usuario que vaya introduciendo los valores 42 00:02:38,740 --> 00:02:40,139 que se va produciendo 43 00:02:40,139 --> 00:02:43,360 evidentemente estos valores los almacenamos primero 44 00:02:43,360 --> 00:02:45,840 en lugar de meterlos directamente en anotaciones 45 00:02:45,840 --> 00:02:48,080 los metemos en una variable llamada puntos 46 00:02:48,080 --> 00:02:50,219 porque tenemos que discriminar los valores 47 00:02:50,219 --> 00:02:53,240 que no son ni 1, ni 2, ni 3 48 00:02:53,240 --> 00:02:55,500 y bueno, el 0 para salir 49 00:02:55,500 --> 00:02:57,120 y el resto de los valores porque no valen 50 00:02:57,120 --> 00:02:58,560 entonces ¿cómo lo hacemos esto? 51 00:02:58,639 --> 00:03:01,699 pues sencillamente ese valor que hemos introducido por teclado 52 00:03:01,699 --> 00:03:03,860 en la variable puntos 53 00:03:03,860 --> 00:03:06,460 con la instrucción while que veis aquí 54 00:03:06,460 --> 00:03:08,520 lo que vamos a hacer es lo siguiente 55 00:03:08,520 --> 00:03:11,280 esta instrucción se va a repetir siempre que los puntos 56 00:03:11,280 --> 00:03:14,300 es decir que la variable punto sea mayor o igual que 1 57 00:03:14,300 --> 00:03:16,639 por lo tanto los valores 1, 2 y 3 nos valen 58 00:03:16,639 --> 00:03:19,139 también nos valen 4, 5 y 6 pero ahora los vamos a eliminar 59 00:03:19,139 --> 00:03:21,819 y el 0 simplemente es porque saldremos de este bucle 60 00:03:21,819 --> 00:03:25,419 cuando ya se haya terminado de realizar las anotaciones 61 00:03:25,419 --> 00:03:27,500 como hemos dicho que con el 0 salimos del bucle 62 00:03:27,500 --> 00:03:30,919 en este bucle while vamos a ir anotando 63 00:03:30,919 --> 00:03:34,219 en la lista anotaciones 64 00:03:34,219 --> 00:03:36,979 con la instrucción anotaciones.appen y el punto correspondiente 65 00:03:36,979 --> 00:03:40,000 o el valor en este caso, el elemento de la lista 66 00:03:40,000 --> 00:03:41,159 lo vamos a ir añadiendo 67 00:03:41,159 --> 00:03:44,259 ¿qué ocurre? que antes de introducirlo en la lista 68 00:03:44,259 --> 00:03:45,860 tenemos que saber si ese valor es válido 69 00:03:45,860 --> 00:03:48,259 ya hemos discriminado el 0 70 00:03:48,259 --> 00:03:50,520 porque es un valor que nos permite salir del bucle 71 00:03:50,520 --> 00:03:52,479 pero el 4, el 5 y el 6 no nos vale 72 00:03:52,479 --> 00:03:54,300 entonces ¿qué hacemos? pues con una simple instrucción 73 00:03:54,300 --> 00:03:55,280 condicional if 74 00:03:55,280 --> 00:03:57,819 si los puntos es mayor que 3 75 00:03:57,819 --> 00:03:59,800 no nos vale mayor o igual que 3 76 00:03:59,800 --> 00:04:01,379 porque entonces el 3 también lo discriminaría 77 00:04:01,379 --> 00:04:03,180 simplemente le indicamos al usuario que 78 00:04:03,180 --> 00:04:05,879 la puntuación no es correcta 79 00:04:05,879 --> 00:04:07,900 y en caso contrario, es decir, que sea un valor 80 00:04:07,900 --> 00:04:09,539 mayor o igual que 1 y menor 81 00:04:09,539 --> 00:04:10,939 y menor que 3 82 00:04:10,939 --> 00:04:13,240 en este caso, menor, sí 83 00:04:13,240 --> 00:04:15,379 correcto, entonces introducimos 84 00:04:15,379 --> 00:04:17,379 los valores 0, 2 o 3 85 00:04:17,379 --> 00:04:19,600 perdón, 1, 2 o 3, disculpad 86 00:04:19,600 --> 00:04:21,620 introducimos los valores 1, 2 y 3 87 00:04:21,620 --> 00:04:22,620 que son los valores válidos 88 00:04:22,620 --> 00:04:25,740 y luego, para volver otra vez 89 00:04:25,740 --> 00:04:27,300 al bucle e introducir los datos 90 00:04:27,300 --> 00:04:29,600 es verdad que al principio se lo hemos pedido, pero no estábamos 91 00:04:29,600 --> 00:04:31,240 dentro del bucle while, con lo cual 92 00:04:31,240 --> 00:04:33,160 esto es una redundancia, probablemente se podrá hacer mejor 93 00:04:33,160 --> 00:04:35,060 pero bueno, dentro del bucle este while 94 00:04:35,060 --> 00:04:36,300 he vuelto a introducir 95 00:04:36,300 --> 00:04:38,879 la petición del usuario 96 00:04:38,879 --> 00:04:43,000 para poder seguir estando dentro del bucle principal. 97 00:04:43,420 --> 00:04:45,860 Bueno, imaginamos que introducimos ya el cero. 98 00:04:46,319 --> 00:04:49,420 Pues introducimos ya el cero, entonces ya lo que hacemos es ya entrar en esta parte 99 00:04:49,420 --> 00:04:53,300 donde lo que hacemos es calcular lo que nos va a pedir después la estadística. 100 00:04:53,420 --> 00:05:00,740 Es decir, creamos unas variables, en este caso las variables libres, canastas, triples y total. 101 00:05:00,959 --> 00:05:02,319 Y las inicializamos todas a cero. 102 00:05:02,519 --> 00:05:06,500 Por cierto, que en esta misma línea se puede poner de esta manera 103 00:05:06,500 --> 00:05:08,680 para que no te quede tan largo el programa 104 00:05:08,680 --> 00:05:10,860 en una misma línea puedes inicializar todas las variables 105 00:05:10,860 --> 00:05:11,779 que quieras de esta manera 106 00:05:11,779 --> 00:05:14,819 hay una variable aquí, que veis aquí, que es la variable i 107 00:05:14,819 --> 00:05:15,920 normalmente se emplea como 108 00:05:15,920 --> 00:05:18,500 para los contadores, como incremento 109 00:05:18,500 --> 00:05:20,439 y eso es así porque con esta 110 00:05:20,439 --> 00:05:22,459 instrucción que veis aquí 111 00:05:22,459 --> 00:05:25,100 la instrucción for in range 112 00:05:25,100 --> 00:05:26,759 nos permite en este caso 113 00:05:26,759 --> 00:05:28,600 ir analizando 114 00:05:28,600 --> 00:05:30,000 cada uno de los elementos 115 00:05:30,000 --> 00:05:31,860 de la lista anotaciones 116 00:05:31,860 --> 00:05:34,439 ¿hasta dónde? pues desde i igual a 0 117 00:05:34,439 --> 00:05:41,160 es decir, desde el primer elemento de la lista anotaciones hasta el elemento final que en este caso es la longitud 118 00:05:41,160 --> 00:05:46,259 y acordaros que la instrucción LEN en una lista nos permitía saber la longitud total 119 00:05:46,259 --> 00:05:50,420 bueno, pues con esto podemos ir analizando todos los elementos de la lista 120 00:05:50,420 --> 00:05:55,060 que uno de los elementos de la lista, el primero por ejemplo, es igual a 1 121 00:05:55,060 --> 00:05:57,800 pues incrementamos la variable libres en 1 122 00:05:57,800 --> 00:06:02,959 esto se hace de esta manera, puede ser libres más igual a 1 o libres igual a libres más 1 123 00:06:02,959 --> 00:06:04,120 exactamente lo mismo, ¿vale? 124 00:06:04,439 --> 00:06:08,980 que la variable es igual, perdón, el elemento de la lista es igual a 2 125 00:06:08,980 --> 00:06:12,100 lo que hacemos es que anastas e incrementarla en un valor 126 00:06:12,100 --> 00:06:15,980 y si es un valor de 3, pues los triples los incrementamos en un valor 127 00:06:15,980 --> 00:06:18,079 de manera que ya tenemos todos los libres que ha metido 128 00:06:18,079 --> 00:06:21,300 todas las canastas y todos los triples 129 00:06:21,300 --> 00:06:24,740 y luego finalmente la puntuación total, bueno, podemos haberlo hecho en cualquier otro momento 130 00:06:24,740 --> 00:06:29,579 haberla sumado y demás, pero bueno, en este caso lo he puesto aquí directamente con este valor 131 00:06:29,579 --> 00:06:31,680 y luego vamos a ver 132 00:06:31,680 --> 00:06:33,920 como presentamos 133 00:06:33,920 --> 00:06:34,800 todos los valores 134 00:06:34,800 --> 00:06:36,779 bueno, para presentar todos los valores 135 00:06:36,779 --> 00:06:39,920 como veis aquí en esta parte 136 00:06:39,920 --> 00:06:40,459 del programa 137 00:06:40,459 --> 00:06:43,399 sencillamente todo es una instrucción Spring 138 00:06:43,399 --> 00:06:45,759 y en este caso pues en la instrucción 139 00:06:45,759 --> 00:06:47,939 el título estadística del jugador 140 00:06:47,939 --> 00:06:49,319 y como veis aquí lo que estamos 141 00:06:49,319 --> 00:06:51,339 introduciendo es el jugador 142 00:06:51,339 --> 00:06:53,839 ha anotado tantas 143 00:06:53,839 --> 00:06:56,019 canastas, ¿por qué? porque el número de elementos 144 00:06:56,019 --> 00:06:56,740 de la lista 145 00:06:56,740 --> 00:06:59,600 que lo podemos averiguar con la instrucción LEN 146 00:06:59,600 --> 00:07:01,680 como hemos visto, pues nos va a decir 147 00:07:01,680 --> 00:07:03,660 el número de canastas, ahora, ¿qué tipo de canastas? 148 00:07:04,839 --> 00:07:05,519 pues vamos a ver 149 00:07:05,519 --> 00:07:06,740 las anotaciones han sido 150 00:07:06,740 --> 00:07:08,480 anotaciones de un punto 151 00:07:08,480 --> 00:07:12,839 pues tanto valor 152 00:07:12,839 --> 00:07:14,040 que tenga almacenado 153 00:07:14,040 --> 00:07:14,920 la variable libres 154 00:07:14,920 --> 00:07:17,199 la variable canastas y la variable libres 155 00:07:17,199 --> 00:07:19,579 y en total, la variable total que vamos a calcular antes aquí 156 00:07:19,579 --> 00:07:21,740 pues en este caso aparecerá aquí al final 157 00:07:21,740 --> 00:07:22,160 ¿vale? 158 00:07:23,360 --> 00:07:25,720 entonces, bueno, vamos a ver como sería 159 00:07:25,720 --> 00:07:32,920 en este caso el ejercicio, introduciendo ya, vamos a ejecutarlo con F5 y una vez que ya lo tenemos 160 00:07:32,920 --> 00:07:43,160 ejecutado, vamos a ejecutarlo, vamos a ello, introduzca el nombre del jugador, pues en este 161 00:07:43,160 --> 00:07:52,250 caso vamos a poner, introduzca la sensación del jugador, 0 para terminar, bueno pues imaginaos 162 00:07:52,250 --> 00:07:57,709 que me mete un triple de nada más empezar, después una canasta de dos puntos, otra canasta de dos 163 00:07:57,709 --> 00:07:59,730 puntos, otra de los puntos, un tiro 164 00:07:59,730 --> 00:08:01,810 libre, se equivoca 165 00:08:01,810 --> 00:08:03,649 el anotador y pone 7 166 00:08:03,649 --> 00:08:05,509 y eso es un error, y finalmente 167 00:08:05,509 --> 00:08:07,769 otra canasta de los puntos y 0 para salir 168 00:08:07,769 --> 00:08:09,910 ¿vale? y una vez que le demos el 0 169 00:08:09,910 --> 00:08:11,329 pues aquí tenemos todas las 170 00:08:11,329 --> 00:08:13,629 estadísticas, el jugador 171 00:08:13,629 --> 00:08:16,189 Pau Gasol ha anotado 6 canastas 172 00:08:16,189 --> 00:08:17,769 las anotaciones han sido 173 00:08:17,769 --> 00:08:19,430 fijaros, la lista la ponemos 174 00:08:19,430 --> 00:08:21,629 directamente con la 175 00:08:21,629 --> 00:08:23,490 lista de anotaciones, pues automáticamente 176 00:08:23,490 --> 00:08:25,750 nos dice que tipo de canastas han sido 177 00:08:25,750 --> 00:08:26,990 y aquí las ha contabilizado 178 00:08:26,990 --> 00:08:38,470 Pues en este caso ha sido un tiro libre, cuatro canastas de dos puntos, como vemos aquí, cuatro canastas que hay, un tiro de tres puntos o dos, un triple y el total de puntos han sido dos. 179 00:08:39,929 --> 00:08:47,230 Bueno, pues como veis esta pequeña aplicación nos permitiría poder realizar las estadísticas de un jugador. 180 00:08:48,830 --> 00:08:55,950 Posibles mejoras de este programa, pues que sirva para todos los jugadores, en vez de introducir el número del jugador antes de la anotación que realiza. 181 00:08:55,950 --> 00:08:58,490 y podríamos tener entonces varias listas 182 00:08:58,490 --> 00:08:59,570 de todos los jugadores 183 00:08:59,570 --> 00:09:02,529 en un partido de fútbol de un equipo 184 00:09:02,529 --> 00:09:04,509 concreto, por ejemplo, este sería para un solo 185 00:09:04,509 --> 00:09:06,309 jugador, pero bueno, evidentemente se podría 186 00:09:06,309 --> 00:09:08,590 extrapolar a cualquier equipo 187 00:09:08,590 --> 00:09:10,450 introduciendo, como digo previamente 188 00:09:10,450 --> 00:09:12,269 el número de los jugadores 189 00:09:12,269 --> 00:09:13,549 o el nombre del jugador, eso da igual 190 00:09:13,549 --> 00:09:15,470 bueno, espero que os haya gustado 191 00:09:15,470 --> 00:09:17,950 y seguimos repasando 192 00:09:17,950 --> 00:09:18,889 hasta luego