Ejercicios 36 y 37 Python - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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
Ay
00:20:23
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