Saltar navegación

Ejercicios 36 y 37 Python - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 25 de enero de 2021 por Enrique Jose N.

72 visualizaciones

Bueno, pues vamos a continuar con el ejercicio 39, me parece que es, sí, el ejercicio 39, en el que nos pide completar el 31, que era el de las medias de los alumnos para una serie de exámenes y un grupo determinado de alumnos, creando un diccionario. 00:00:01
Lo que pasa es que yo, ahora mismo, si no me acuerdo mal, creo que ya lo hicimos con el diccionario en su momento. No sé por qué. Bueno, entonces lo voy a hacer el modelo 31 sin diccionario y después voy a completarlo como deberíamos haber hecho. 00:00:19
Pero es que me suena, ahora no me acuerdo de memoria y no tengo el archivo, que en su momento lo hice ya con el digital web. Lo hacemos aquí y ya está. Entonces comenzamos como los anteriores, ¿verdad? Con un input para preguntar el número de alumnos, ¿de acuerdo? 00:00:33
de estudiantes, tecle el número de estudiantes, vale, otro que sería numexam o numex o como 00:00:51
sea, exam voy a poner, igual, int, input, tecle el número de exámenes, o el mensaje 00:01:02
que queráis, por supuesto, vale, y ahora, para cada estudiante, así que fuera estudiante 00:01:10
range y aquí ponemos, pues, num estudiantes, por supuesto. ¿Vale? Veis que este entorno 00:01:23
no tiene tantas ayudas como el otro, pero bueno. Pues para cada uno de los estudiantes 00:01:30
lo que vamos a hacer es un acumulador. ¿Para qué? Pues para ir metiendo ahí la suma de 00:01:37
todas las notas y poderlo dividir luego entre el número de exámenes, calculando así la 00:01:43
media, ¿verdad? Entonces print y aquí ponemos estudiante, esto es un poco de adorno, pero 00:01:47
bueno, queda bien, estudiante número, mis llaves para format, ¿verdad? Perdón. Y comenzamos 00:01:54
como los ejercicios de antes con estudiante más uno, para que ponga estudiante número 00:02:05
uno y no estudiante número cero, ¿verdad? Perdón. Y ahora ponemos aquí alumno igual 00:02:09
estudiante, de nuevo llaves, estudiante más uno. Forma estudiante más uno, ¿de acuerdo? 00:02:17
Bien, esto sería en cuanto a los estudiantes, ¿vale? Para cada uno de ellos me va a poner esto. 00:02:33
Y ahora, bueno, esto de alum en realidad lo necesitaríamos, lo voy a eliminar porque solo necesitamos que estaba haciéndolo ya con el diccionario para el diccionario. 00:02:48
entonces lo pongo luego, porque de hecho todavía no hemos creado el diccionario 00:02:57
luego voy a insertar las líneas en las que tenemos que corregir 00:03:02
el que estoy corrigiendo ahora, el 39, estoy intentando hacer el 31 00:03:05
sin diccionario, con lo cual esta línea, pues la verdad que ahora no la necesitamos 00:03:09
al num es para utilizarlo como clave en el diccionario 00:03:14
así que sin más, si no vamos a hacer el diccionario de momento 00:03:19
pues entonces por ex num, o perdón, si bueno, da igual 00:03:21
por cambiar un poco el nombre de la variable 00:03:25
y ahora sí, numExam 00:03:28
o num, como se llame, numExam, sí 00:03:30
numExam, vale 00:03:33
dos puntos, y hacemos como antes 00:03:40
para que quede con la misma forma, de acuerdo 00:03:43
examen, número, format 00:03:45
paréntesis, y el nombre de la variable 00:03:54
exNum, de la variable 00:03:57
que se queda en tiempo real en el bucle, ya sabéis, exNum 00:03:59
más 1 de nuevo 00:04:02
para que la iteración 0 ya me ponga 00:04:05
examen número 1 00:04:08
y igualmente 00:04:09
la variable nota 00:04:12
sí que la tenemos 00:04:13
que crear porque la necesito 00:04:16
para 00:04:18
hacer la media, si no, no puedo continuar 00:04:18
de acuerdo, es la variable media 00:04:22
la que no vamos a tener que utilizar en el diccionario 00:04:24
hasta que lo creemos, obviamente 00:04:26
bien, entonces float input 00:04:28
y aquí pongo, igual te queda la nota 00:04:29
o sin más nota, dos puntos y un espacio para que la grabemos. 00:04:32
Y ahora, en el total, lo que voy a hacer es sumar la nota. 00:04:37
Total más igual, nota. 00:04:42
Es decir, el total le sumamos la nota y así va acumulando, acumulando y acumulando. 00:04:44
¿Para qué? Pues para calcular ahora la media, ¿verdad? 00:04:49
Como el total entre numExam. 00:05:01
y ahora por último 00:05:06
print la nota media 00:05:11
perdón, para este estudiante 00:05:16
es de lo que sea 00:05:22
.format media 00:05:26
vale, y con esto habíamos terminado, veo aquí como 00:05:31
que se me ha ido la sangría porque claro, este 00:05:35
Este bucle tiene que estar dentro del anterior, claro, para cada alumno preguntamos cada uno de los exámenes que hay, entonces dentro del alumno 1, del estudiante 1, tenemos el examen 1, el examen 2, dentro del alumno 2 tenemos el examen 1, el examen 2, etc. 00:05:38
Y la media esta, a ver dónde la pillo, la media esta también tiene que ir aquí, en este nivel, igual que esto, porque es dentro de cada estudiante donde queremos calcular la media una vez que terminemos el núcleo. 00:05:56
¿De acuerdo? Bueno, pues este sería el ejercicio. Vamos a ejecutarlo y vamos a ver qué tal va. Tecleé el número de estudiantes. Pongo 2, que es fácil, ¿de acuerdo? Es más cómodo. Tecleé el número de exámenes, 2. Entonces veis que pone estudiante número 1, examen número 1, un 5. Examen número 2, un 6. La nota media para este estudiante es de 5,5. Ahora, estudiante número 2, examen número 1, un 7. Examen número 2, un 8. La nota media para este estudiante es de 7,5. 00:06:15
Entonces, claro, he hecho este ejercicio que sería el 31 porque quería recuperarlo para ver cómo lo completamos con el diccionario. Como digo, creo que lo corregí con el diccionario, aunque no lo pedía el 31. Entonces, hasta aquí podríamos llegar sin hacer el diccionario. Simplemente es un bucle, ¿verdad? Esto es un bucle que ya sabíamos hacer. Un bucle for con acumulador y otro bucle for anidado en el primero. 00:06:43
Pero ahora vamos a crear un diccionario. ¿Para qué? Pues para que estos datos no se pierdan, para que estos datos queden grabados en ese diccionario. El siguiente paso, que es el ejercicio 40, es completarlo con el nombre de los estudiantes y además crear un archivo donde se guarde ese diccionario. 00:07:07
porque claro, es la fase última, aquí lo creo y está en el programa, pero desaparece igualmente cuando yo cierre esto, sin embargo, si yo completo el programa creando un archivo, 00:07:24
que aunque todavía no lo hemos visto, lo vamos a hacer y vais a ver que es muy sencillo, pues en ese momento he creado un archivo que ya no desaparece, se ha ejecutado y me ha generado un archivo 00:07:35
que yo me puedo llevar y que puedo utilizar para lo que quiera, un archivo txt. Bueno, entonces a lo que íbamos, vamos a crear ahora el diccionario, para eso me tengo que ir aquí, 00:07:44
después de estos dos inputs y voy a crear aquí un diccionario. Recordad que para crear un diccionario tengo que escribir su nombre 00:07:53
y después escribir la función div. Con esto ya tenemos creado el diccionario. Y ahora, muy importante, lo que estaba escribiendo antes 00:08:02
en el bucle principal, para los estudiantes, aquí después de esta línea número 7, antes del bucle para los exámenes, necesito crear una nueva variable 00:08:10
que va a ser para cada uno de ellos la clave, ¿verdad? 00:08:21
El diccionario, el alumno 1 será la clave 1, el alumno 2 será la clave 2 00:08:27
y luego la media será el valor de cada uno de estas claves, ¿vale? 00:08:31
Entonces, la creamos simplemente ahora poniendo estudiante número 00:08:38
y aquí, tracatrá, vale, punto, format, paréntesis y aquí ponemos estudiante más uno, lo mismo que antes, así que la clave va a ser estudiante uno, estudiante dos, etcétera, etcétera, etcétera, vale, con eso tenemos ya creado lo que va a ser la clave del diccionario, 00:08:44
Ahora necesitamos utilizar eso junto con la media para rellenar el diccionario. ¿Y dónde vamos a hacer eso? Pues justamente después de calcular la media. Aquí, en esta línea. ¿Vale? ¿Qué vamos a escribir? Pues esta sintaxis que os dije que es muy importante que recordemos. 00:09:07
NotasAlum, el nombre de la variable que está en la línea número 8 00:09:22
Igual a media, ¿vale? 00:09:27
Así que para el estudiante 1, su media 00:09:32
Para el estudiante 2, su media 00:09:34
Y por último, para poder comprobar que nos ha salido bien 00:09:36
Pues vamos a hacer esto, printNotas 00:09:40
Y vamos a ejecutarlo, ¿vale? 00:09:42
Fijaos en lo que hemos añadido 00:09:44
Le doy aquí y de nuevo voy a poner 2 y 2, ¿vale? 00:09:46
A ver, 2, 2, vale. Nota del examen 1, 5, 6. Hasta ahora me he hecho lo mismo que antes, ¿verdad? 8, 9. Pero la diferencia ahora, fijaos, es que al final del programa me muestra en pantalla el diccionario notas, ese diccionario que yo he creado en la línea 4, cuyas claves he creado en el bucle for principal, en la línea 8, 00:09:49
y cuyos valores he creado 00:10:17
en la línea 13 00:10:19
del bucle secundario 00:10:21
pues como os digo 00:10:23
perdón, del bucle principal 00:10:25
como os digo, este diccionario 00:10:27
aparece ahí y 00:10:29
nos permite guardar todo esto 00:10:31
¿para qué? pues claro, o para utilizarlo 00:10:33
más adelante en el programa o para guardarlo 00:10:35
en un archivo, porque hacerlo 00:10:37
por hacerlo como ahora, pues no sirve para nada 00:10:39
ahí se queda, da igual, no sirve para nada 00:10:41
pero entender que en un programa más largo 00:10:43
me lo guardo, está en el programa, está creado 00:10:45
y ya puedo hacer con él lo que quiera 00:10:47
vale, bueno, pues vamos a hacer 00:10:49
espero que no se alargue mucho el vídeo 00:10:51
vamos a hacer el ejercicio número 40 00:10:53
y con eso terminamos 00:10:55
todos estos ejercicios 00:10:57
el ejercicio 40 es el más largo 00:10:59
¿de acuerdo? porque 00:11:01
añade a todo lo anterior 00:11:03
el hecho de 00:11:05
dar los nombres de los alumnos 00:11:07
¿vale? venga, pues igual 00:11:09
número de estudiantes 00:11:11
y input, teclea el número de estudiante 00:11:13
vale, y número de exámenes 00:11:17
teclea el número de exámenes 00:11:24
no lo copio, así lo vamos haciendo una vez más 00:11:27
y ahora aquí creamos el diccionario, notas, dict, paréntesis 00:11:31
vale, ya lo tenemos creado, y empezamos con el bucle principal 00:11:43
for estudiante, in range, número de estudiantes 00:11:47
num es la variable de la línea 1, ¿verdad? 00:11:51
dos puntos, el acumulador a cero 00:11:56
¿vale? y ahora, a diferencia del ejercicio anterior 00:12:00
empezamos a pedir datos nombre, input 00:12:04
nombre del estudiante, y dejamos aquí un huequillo para que 00:12:07
quede mejor, ¿vale? igual aquí que luego si no, bueno, ya nada 00:12:18
bien, teclee el nombre del estudiante 00:12:21
Y bueno, sí que vamos a poner, perdonadme, número, upum, ¿vale? Y, me sobra una comilla, y nuestro format. Format, y como siempre, estudiante más uno para que comience por el uno y no por el cero. Estudiante más uno, ¿vale? 00:12:29
Bueno, apellido, pues lo mismo, input, nombre o apellido, perdón, del estudiante, número tal, estudiante más uno, ¿vale? Para el primer estudiante nos pide el nombre y el apellido y ahora, muy importante, fijaos lo que creamos aquí, una nueva variable que va a contener tanto el nombre como el apellido unidos, ¿vale? 00:12:49
Que sería equivalente a la que pusimos antes, ¿verdad? Antes ponía, acordaos del programa 39, la anterior, en el que alum ponía simplemente estudiante número 1. Y así se guardó estudiante número 1, 7,7 y su media. Estudiante número 2, 9,3 la media, ¿vale? Aquí van a estar juntos, va a poner en lugar de estudiante número 1 el nombre y el apellido del estudiante. 00:13:25
aquí está, vale, y esa va a ser la clave 00:13:48
del diccionario, ¿de acuerdo? 00:13:53
y ahora, muy importante, necesito 00:13:55
crear una lista, porque quiero 00:13:57
aparte de poner los nombres del alumno 00:13:59
el ejercicio 40 me pide 00:14:01
que guarde las calificaciones 00:14:03
este es el gran cambio con el anterior 00:14:05
no solo la media, que eso es muy fácil 00:14:07
porque es un solo valor, sino todas las calificaciones 00:14:09
¿de acuerdo? la del primer examen 00:14:12
la del segundo, la de todos aquellos 00:14:13
exámenes que se hayan hecho 00:14:15
Entonces creo una lista vacía o le puedo dar un nombre si queréis. Voy a llamarla calificaciones, ¿vale? Porque en otras ya se llama el diccionario, ¿de acuerdo? Y ahora tengo aquí el bucle secundario para los exámenes. 00:14:17
exnum in range numexam, ¿vale? Y algo similar a lo de antes, print examen número, el 1, el 2, el que sea, ¿vale? 00:14:33
Format, paréntesis, exnum, el nombre de la variable del bucle es num más pu, ¿vale? 00:14:57
Y nota de ese examen, ¿verdad? Pues la pedimos y como esto es lógico que sea un decimal, input, tecle o sin más como pusimos antes, nota, ¿verdad? Dos puntos y un espacio para que se quede grabada, ¿de acuerdo? 00:15:08
En cada iteración vamos a añadir una nota a la lista, ¿verdad? Necesitamos hacer eso porque quiero que estén todas las notas. 00:15:26
Pues entonces, lista.append, ¿vale? Y aquí escribo nota, porque es el valor. 00:15:34
Entonces, pido una nota, un 5, y la añado a la lista que estaba vacía. La primera nota será un 5, la del primer examen. 00:15:42
Pido otra nota en la siguiente iteración de este bucle secundario, un 7. Pues la hago en la lista, la añado con append, 7, 5, 7. 00:15:48
La siguiente, 1, 8, 5, 7, 8, así sucesivamente. Y ahora calculo, por supuesto, la media añadiendole al total la nota y después calculando la media. Voy a poner aquí printlista para verla, ¿vale? Y aquí debajo voy a calcular la media de este alumno, igual a total partido de numexam, ¿vale? 00:15:56
Aquí es una rabia que no me ofrezca los nombres de variables, etcétera, porque se hace más pesado, ¿de acuerdo? Ahora quiero que esa lista que se llama, ay, perdón, por cierto, que le cambiamos la marcha y fijaos, luego no me he olvidado, calificaciones se llama la lista, ¿verdad? Pues que esa lista que se llama calificaciones sea los valores para cada uno de los alumnos, ¿de acuerdo? 00:16:21
Entonces, vamos a hacerlo. Después de calcular la media, lo que hago es utilizar el diccionario notas con la clave alum, que recordad que es el nombre más el apellido, igual a calificaciones, la lista de calificaciones. 00:16:44
Y nos faltaría mostrar la media, al menos, print, la nota media de este alumno, de este estudiante, es format media. 00:17:04
Vale, hasta aquí, bien. 00:17:28
Y ahora voy a añadir una cosa que ya veremos en las próximas clases y en el futuro, porque todavía no lo hemos estudiado, 00:17:29
pero bueno, lo ponemos aquí porque es importante para cerrar este ciclo. Hemos aprendido a utilizar listas, a crear diccionarios con las listas, a pedir al usuario los datos para todo, a almacenarlo todo, pero claro, nos queda guardar eso que ha almacenado. 00:17:35
Entonces, lo que hacemos ahora es crear un archivo. Para crear un archivo hago lo siguiente. Utilizo la función open y tengo que utilizar dos argumentos. El nombre del archivo, que es notas.txt, y el tipo de archivo, w.escribible.write. 00:17:50
Y ahora en notas voy a poner str notas. ¿Por qué? Porque notas es un diccionario y yo lo quiero guardar en un archivo de texto como caracteres, como texto. Entonces lo tengo que convertir en str. 00:18:09
De acuerdo, no he probado por cierto archivos en este entorno de programación, espero que no me dé problema, si no luego lo hago con el ordenador en otro momento. 00:18:26
Vamos a probarlo, write y escribo aquí las notas en el archivo, veis, en esta línea, primero que en el archivo, el archivo se llama notas y ahora en el archivo escribo el diccionario de notas convertido en texto. 00:18:37
Y por último, muy importante, siempre que trabajamos con archivos los tenemos que cerrar de esta forma, utilizando el close. Y por último, perdón, print, paréntesis, notas, ¿vale? Bueno, pues creo que esto sería todo lo que necesitamos y vamos a probar si no me he equivocado en nada y si funciona, ¿vale? 00:18:50
Pues mira, ya me he equivocado en algo. A ver en dónde. La línea 7, apellido input, apellido de estudiante número, formato estudiante más 1. A ver, déjame ver. Input, ¿dónde está el error? No lo veo. A ver un segundito. Vaya tela. Aquí creo que es que me sobra un paréntesis. 00:19:06
no, no me sobra 00:19:43
uno 00:19:47
estudiante, uno 00:19:48
no, no me sobraba, ¿no? 00:19:51
ya, ya, efectivamente, estoy tonto 00:19:56
no es que me sobrara aquí, es que me faltaba 00:19:58
aquí 00:20:00
es que veo menos, vale, ahora sí 00:20:01
venga 00:20:04
¿te crees el número de estudiantes? pues dos 00:20:05
¿te crees el número de exámenes? 00:20:07
dos, vale, nombre del 00:20:09
del alumno uno 00:20:12
Pedro 00:20:13
Apellido del alumno 00:20:14
Romero 00:20:18
Vale, examen número 1, nota 6 00:20:19
Examen número 1, nota 00:20:22
Sería una print lista 00:20:24
Modulículo en línea 15 00:20:27
Ah, qué horror 00:20:30
¿Veis lo que me pasa por haber cambiado de nombre 00:20:31
En mitad del programa, verdad? 00:20:35
Calificaciones 00:20:39
Espero que no esté más por ningún sitio el problema 00:20:40
Venga, vamos allá de nuevo 00:20:42
2, 2, vale, Pedro Romero, nota primera 5, nota segunda 6, vale, número 2, Ana Ruiz, nota primera 7, nota segunda 6, vale 00:20:44
y aquí lo tenemos, veis, entonces para Pedro Romero las notas son 5, 6, para Ana Ruiz las notas son 7 y 6 00:21:03
Ahí tenemos el resultado de esto. Ahora mismo no os lo puedo enseñar aquí porque, sinceramente, acabo de utilizar aquí en la tableta este editor y no sé dónde guarda este archivo, pero cuando lo corrijamos en la próxima clase de miércoles vuelvo a hacer este ejercicio y así lo revisamos porque es muy importante y os muestro cómo en la carpeta del proyecto, o si lo habéis hecho vosotros o lo hacéis aquí el miércoles, comprobáis cómo en la carpeta del proyecto se ha creado un archivo que se llama notastext y un archivo correcto. 00:21:12
este texto con lo que acabamos de hacer 00:21:42
y ese archivo de texto, yo me lo puedo quedar y puedo hacer con él lo que quiera 00:21:46
ya tengo los datos que he tecleado en un archivo externo 00:21:49
al programa, que ya es, digamos que he conseguido un producto, hasta ahora 00:21:54
estábamos haciendo ensayos, lo veíamos aquí, pero no obteníamos ningún resultado real 00:21:57
ahora mismo hemos visto como el resultado del programa me genera 00:22:02
por fin un producto, un archivo, ¿verdad? Muy bien, bueno pues esto sería 00:22:05
todo de momento. Echadle un vistazo, ¿vale? Esto era lo que teníamos que haber visto 00:22:10
en la clase del otro miércoles y son los ejercicios que teníais para casa. Para hacer 00:22:15
en la semana los revisaré. No pretendo que hayáis hecho todos ni todos bien, ¿de acuerdo? 00:22:22
Entonces, incluso sin estar todos completos, se puede tener la máxima calificación. El 00:22:27
próximo día ya lo vamos viendo. Y ahora tengo dudas de si continuar con funciones 00:22:31
o continuar con listas, la verdad que cada año voy cambiando el orden 00:22:36
a veces continúo con ampliación 00:22:39
de este tipo de estructuras de datos, listas, diccionarios, tuplas 00:22:42
y a veces lo corto aquí y paso a funciones 00:22:45
no sé qué hacerlo, pienso de aquí al miércoles 00:22:48
y lo vemos, de acuerdo 00:22:51
y bueno, pues eso es todo, muchas gracias, hasta el miércoles 00:22:52
Autor/es:
Enrique Neira
Subido por:
Enrique Jose N.
Licencia:
Dominio público
Visualizaciones:
72
Fecha:
25 de enero de 2021 - 22:42
Visibilidad:
Clave
Centro:
IES AVENIDA DE LOS TOREROS
Duración:
22′ 58″
Relación de aspecto:
0.75:1
Resolución:
1440x1920 píxeles
Tamaño:
203.37 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid