17. Ejercicios Propuestos

  1. Definir un diccionario con 4 elementos.  Las claves son clave1, clave2, clave3 y clave4. Y los valores correspondientes a cada clave son: un valor entero, un valor booleano, un string y una lista que contiene los números desde el 1 al 4.
  • Mostrar a que tipo corresponde la estructura completa.
  • Mostrar cada uno de sus valores usando sus claves
  • Mostrar que tipo de dato tiene cada valor de clave
  • Agregar un elemento más al diccionario
  • Ingresar por teclado un dato y determinar si existe una clave que coincida con el dato ingresado. Si se encuentra mostrar el valor asociado
  • Copiar en forma “superficial” el diccionario y modificar el primer valor de clave. Observar que sucede con el diccionario original
  • Poner el valor cero a todos los valores del diccionario
  • Recorrer y mostrar todos los elementos clave-valor del diccionario
  • Ingresar por teclado un dato y determinar si existe ese valor en el diccionario. Si se encuentra mostrar la clave.
  • ingresar por teclado un dato y  eliminar del diccionario dicho dato si se encuentra dentro del diccionario.
  • Eliminar todos los elementos del diccionario

2: 

 Dada la lista =[ {'a':0 ,'b':1,'c':2}, {'d':3,'c':4,'b':5}, {'a':5,'d':6,'e':1}]

  • Mostrar elemento {'d':3,'c':4,'b':5}
  • Mostrar el valor 4
  • Agregar a la lista el valor {'f':4,'g':5,'c':2}

 3. Definir un diccionario y luego cargar N elementos. N se ingresa por teclado. Luego:

  • Recorrer el diccionario mostrando el par clave-valor
  • Devolver el número de elementos del diccionario
  • Recorrer el diccionario mostrando las claves
  • Insertar un nuevo elemento en el diccionario
  • Copiar un diccionario a otro vacío
  • Eliminar el diccionario original

4. Definir un diccionario de nombre inventario que tenga el nombre de tres frutas como claves y los valores sean una lista que contenga la cantidad de esa fruta vendida cada día de la semana (considerar que la semana tiene 7 días).

  • Mostrar el diccionario cargado
  • Mostrar las claves del diccionario
  • Mostrar todos los valores cargados en el diccionario
  • Agregar una nueva fruta como clave al diccionario y sus ventas en la semana
  • Mostrar en pantalla el nombre de cada fruta y el total vendido de esa fruta en la semana
  • Mostrar en pantalla el nombre de cada fruta y el promedio vendido de esa fruta en la semana
  • Mostrar el nombre de la fruta que mas se vendió esa semana.
  • Ingresar un nro (1, 2, 3 ó 4) y mostrar clave y valores para esa fruta (la 1era, la 2da, la 3era o la 4ta) 
  • Mostrar qué fruta se vendió mas y qué día.
  • Copiar las claves del diccionario a una lista nueva.
  • Mostrar esa lista nueva ordenada de menor a mayor
  • Ingresar el nombre de una fruta y un día de la semana, mostrar el valor de la venta de esa fruta ese día. Pedirle al usuario que ingrese un nuevo valor para esa fruta para ese día y modificarlo. Mostrar nuevamente para verificar la edición.
  • Vaciar el diccionario y mostrarlo
  • Eliminar el diccionario

5. Definir un diccionario con los siguientes pares: 

  • Fiat: Uno
  • Ford: Ranger
  • Toyota: Hilux
  • Peugeot: 206

Mostrar en pantalla una de las parejas, luego elimínela, y agregue al diccionario el par "Chevrolet": "Corsa". Finalmente imprima el diccionario.

6. Consulte en la página https://dolarhoy.com/ las distintas cotizaciones del dólar estadounidense en el día de la fecha. Arme un diccionario con las mismas. Imprima clave y valor del tipo de cambio blue. Finalmente acceda a la cotización del tipo de cambio dólar bolsa y calcule el valor en pesos de una casa que vale U$D 500000; muéstrelo en pantalla.

7. Recientemente ha finalizado la temporada regular de la Liga Nacional de Básquet. Arme un diccionario con los partidos jugados (PJ), los ganados (PG) y los perdidos (PP) por Oberá Tenis Club (https://www.laliganacional.com.ar/laliga/page/estad_posiciones). Imprima el diccionario. Accediendo a los valores cargados, calcule el porcentaje de partidos ganados y el de partidos perdidos. Muestre en pantalla los resultados y agregue dichos valores al diccionario creando las claves G (porcentaje ganados) y P (porcentaje perdidos). Imprima el diccionario.

8. Ingrese por teclado las capitales de los siguientes departamentos de Misiones: Capital, Guaraní y Cainguás. Cree un diccionario con dichos datos. Finalmente cree un par clave-valor nuevo, donde la clave se llamará "Ciudades más pobladas" y el valor será una lista que incluya las 3 ciudades más pobladas de la provincia (https://es.wikipedia.org/wiki/Provincia_de_Misiones#Principales_ciudades). Imprima la segunda ciudad más poblada.

9. Ingrese por teclado las 3 películas más taquilleras de todos los tiempos (https://es.wikipedia.org/wiki/Anexo:Pel%C3%ADculas_con_las_mayores_recaudaciones) y almacénelas en una lista. Luego arme un diccionario siendo el nombre de las películas las claves, y los correspondientes valores serán listas donde el primer elemento sea la recaudación, el segundo el presupuesto y el tercero el año de estreno. Imprima ""Nombre de la película" se estrenó en el año "año de estreno", costó "presupuesto" y recaudó "recaudación"" para cada una de las películas.

10. Cargar un Diccionario con el nombre de  tres alumnos y las notas de tres parciales.

  • Validar las notas al cargar [0,10]
  • Mostrar el nombre de cada alumno y SOLO la mayor nota de los tres parciales.
  • Mostrar el nombre de cada alumno y el promedio de las tres notas de los tres parciales.
  • Cargar desde el teclado dos listas con valores reales, lista1 y lista2. Luego incluir en un diccionario las listas como valores para las claves : 'UNO' y 'DOS'.

11. Cargar un Diccionario 4 conjuntos de claves/valores.

  • Mostrar las claves del Diccionario Solamente.
  • Mostrar los valores del Diccionario Solamente.

12. Definir un Diccionario.Mostrar el Diccionario. Pedir el ingreso de una Clave y mostar el Valor para esa clave por pantalla y eliminar esa clave/valor del diccionario. Mostrar el diccionario.

13. Definir :

x=(1,2,3,4) 

Mostar por pantalla el tipo de dato que es x. Luego generar un Diccionario con los valores de x como claves usando método fromkeys().

  • Cuantos Argumentos acepta fromkeys?
  • Cuantos argumentos estoy pasando en la resolución de este ejercicio?

Para consultar sobre el uso de fromkeys, puede referirse a la documentación oficial de python:

https://docs.python.org/3/library/stdtypes.html?highlight=fromkeys#dict.fromkeys

14. Escriba un diccionario de banderas donde liste los colores que componen las banderas de 6 países: Italia, Libia, España, Argentina, Japón, China.

  • Muestre el diccionario.
  • Borrar el país de Libia.
  • Inserte el país Uruguay y los colores de su bandera al principio del diccionario.
  • Agregar aparte de los colores, características que tiene cada bandera, la de Argentina un sol, la  de Japón un círculo, a la de España un escudo.

15. Escriba un diccionario de español a francés con los siguientes animales:
        gato = chat
    perro = chien
    caballo = cheval

  •     a-    Muestre el diccionario.
  •     b-    Verifique (mostrando en pantalla True o False) si existe en el diccionario la traducción de caballo y de cisne.
  •     c-    Pida el ingreso por teclado el nombre de un animal y el código debe mostrar su traducción al francés.
  •     d-    Verifique en el diccionario con True que la traducción de gato es chat.
  •     e-    Modifique la traducción de gato por minou.
  •     f-    Realice una copia del diccionario y agregue al diccionario original la traducción de cisne (cygne).
  •     g-    Elimine perro del diccionario original.
  •     h-    Muestre los dos diccionarios por pantalla.
  •    i-agregue el par de valor en frances para rata

   
16. Defina el siguiente diccionario en Python:
        {'entero': 10, 'flotante': 2.5, 'string': 'Hola'}

 a-    Agregue una nueva clave llamada 'lista' que contenga una lista vacía.

 b-    Ingrese por teclado 3 elementos a la lista que agregó en el punto anterior.

 c-    Muestre en pantalla el diccionario.

 d-    Muestre en pantalla solamente la lista.

 e-    Modifique el segundo elemento de la lista.

 f-    Realice una copia del diccionario y muestre por pantalla.

 g-    Al diccionario original agregue una nueva clave llamada 'diccionario' que contenga un diccionario de un elemento. 

h-    elimine el último elemento de la lista del diccionario original.

i-    Cambie el valor de la clave 'entero' por 25.

j-    Muestre ambos diccionarios.

k-    Vacíe el diccionario original y muestre por pantalla ambos diccionarios.

l-    Borre ambos diccionarios.

17. Escribir un programa que pregunte al usuario su nombre, edad, dirección y teléfono y lo guarde en un diccionario. Después debe mostrar por pantalla el mensaje: "nombre" tiene "edad" años, vive en "dirección" y su número de teléfono es "telefono". Declarar N (cantidad de datos a ingresar ). Hacer que el script anterior ingrese N datos( nombre, edad, dirección)

18. Escribir un programa que le permita al usuario cargar dos listas de tres números enteros. Luego, agregar estas listas como valores a un diccionario asociados con las claves "Lista1" y "Lista2" respectivamente. 

Agregar un tercer elemento al diccionario, cuya clave sea "Suma" y su valor sea una lista cuyos elementos sean la suma de los elementos de Lista1 y Lista2. Finalmente, mostrar en pantalla el diccionario.

19. Escribir un programa que solicite al usuario que ingrese un número entero "N". Luego, se debe crear un diccionario que almacene los 5 primeros múltiplos del número ingresado. Las claves deben ser "M1, M2, ... , M5" y los valores deben ser los múltiplos correspondientes. Finalmente, mostrar en pantalla: "Los primeros cinco múltiplos de "N" son: " y a continuación los valores separados por coma.

20. Escribir un programa en el que se almacene en un diccionario llamado "PreciosCosto" los precios por kilo de cebollas, morrones, zanahorias y tomates (los precios deben ser ingresados por el usuario).  Luego, se debe crear el diccionario "PreciosVenta" en cual se debe almacenar una copia del diccionario "PreciosCosto" pero los valores deben ser incrementados en un 40%. Finalmente, mostrar en pantalla ambos diccionarios.

21. Escribir un programa que solicite al usuario que ingrese tres listas con tres temperaturas cada una. Luego, agregar estas listas como valores a un diccionario, asociados con las claves "dia1", "dia2" y "dia3" respectivamente. Después agregar dos elementos al diccionario cuyas claves sean "maximas" y "minimas", el primero debe contener como valor una lista con las temperaturas máximas de los tres días, y el segundo debe contener como valor una lista con las temperaturas mínimas. Finalmente, mostrar el diccionario completo en pantalla.

22. DICCIONARIOS - EJEMPLO PRÁCTICO

■ PROBLEMA: Se necesita un pequeño programa que permita convertir un determinado monto de “pesos” en alguna moneda disponible. Las monedas disponibles estarán almacenadas en un diccionario, así como la relación de conversión correspondiente. Se solicitará al usuario el monto a convertir, y la moneda final. Antes de esto último, se deberán mostrar las alternativas disponibles. Buscar la forma de presentar todo con estética y que resulte intuitivo, además de minimizar los errores a cometer por parte del usuario.

■ Ejemplo de uso:


■ PROBLEMA: Tomando como base lo realizado anteriormente, asociar a cada moneda su nomenclatura corta. Ejemplo: para dólares es USD. De esta forma el resultado puede mostrarse sin conflictos en las cantidades (singular o plural). Nota: el valor de una clave en un diccionario, puede ser un tipo de dato que admita múltiples valores.

■ Ejemplo de uso:


DICCIONARIOS: Manipulación de datos:

■ Dado el siguiente diccionario, quitar el valor 5 de la clave 'lista'.

 ■ Agregar algunas frutas a la clave correspondiente y quitar 'zapallo'.

■ Corregir el diccionario interno 'dicc', a fines de que los valores sean coincidentes a las claves. ■ Antes de cualquier acción, copiar el diccionario original. Realizar una comparación al finalizar, y de esta forma, validar las tareas efectuadas.

diccionario = {'lista': [1,2,3,4,[5,6,7]],

'frutas': ['zapallo','pera','frutilla’],

 'dicc': {1:1,2:2,3:4,4:4,5:5,6:7}, }


23) Diccionarios con Lista.

Se quiere carga los nombres y notas de tres parciales de los alumnos.

Para ello se propone usar un diccionario que como clave tenga el nombre del alumno y como valores una lista para las notas de los parciales-.

Crear un menú como el siguiente:

1) Cargar alumno y notas

2) Mostrar el nombre y promedio mas alto.

S o S) Salir.-


OBS.

  • No deben existir dos nombres iguales, hay que validar y solicitar reingreso si se da esa situación.
  • Las notas deben pertenecer a [0,10] si no es el caso solicitar reingreso.
  • Ver que no puedo ejecutar el punto 2 si al menos no ejecute el punto 1.
24) Solicitar al usuario que ingrese una cantidad F de filas y una cantidad C de columnas para crear una matriz cuadrada.

Luego, cargar la matriz solicitándole al usuario que ingrese cada elemento.

Mostrar toda la matriz y luego solo su diagonal principal.

25) (nuevo 2024) Declarar un diccionario vacío llamado datos. Luego crear un menú como el siguiente:
1) Mostrar el diccionario.
2) Agregar una clave/valor al diccionario.
3) Eliminar una clave/valor determinada del diccionario.
4) Cambiar un valor de una clave.
F ó f ) Finalizar el script.


26) 
Desarrollar un script que permita cargar una lista llamada datos, en la cual se pueden cargar:
  • Listas.
  • Diccionarios.
  • Entero o Reales,
  • String.

Se deberá crear un menú como el siguiente:

  • 1)Cargar
  • 2)Mostrar
  • S)Salir.

Se puede asumir que no existen errores de tipo en la carga como primer versión del código.-


27. Se desea tener  un registro de productos de almacén. Se quiere almacenar un ID (número de producto autoincremental)

Los datos del producto son:

- Id

- Descripción o nombre del producto

- Precio de compra

 - Cantidad disponible

Se debe presentar un menú con las siguientes opciones:

1) Cargar un producto

2) Listar los productos que tengan un stock por debajo de x. Donde x se ingresa por teclado.

3) Mostrar el producto mas económico

4) Mostrar el producto mas caro

5) Mostrar los productos cargados

6) Modificar la cantidad en stock de un producto.

S) Salir


28. EJERCICIO INTEGRADOR

Sistema de Gestión de Inscripción y Asignación en Cursos de Informática Avanzada

La Facultad de Ingeniería ofrecerá un curso de Informática Avanzada dividido en tres orientaciones: Aprendizaje Automático (Machine Learning), Ciencias de Datos (Data Science) y Programación Orientada a Objetos (POO). Cada alumno podrá elegir una sola orientación y se le tomará un examen diagnóstico para evaluar su nivel. Según el resultado, será asignado a una comisión: A, B o C, cada una con docentes y aulas asignadas según capacidad.

Deberás construir un programa que acompañe el proceso completo:

1.      Inscripción de alumnos: ingreso de datos y selección de curso.

2.      Validaciones: no duplicar inscripciones, permitir cambios mientras esté abierta la inscripción.

3.      Evaluación: registrar notas del diagnóstico, asignar comisiones.

4.      Asignación: designar docentes, distribuir aulas, evitar superposiciones.

5.      Análisis: generar estadísticas sobre cantidad de inscriptos, comisiones más numerosas y curso más elegido.

Para este proyecto se trabajará por etapas, con ejercicios que aumentan progresivamente en dificultad. Es fundamental que cada ejercicio reutilice y mejore las estructuras del anterior. Se deberán usar listas, diccionarios, listas de diccionarios, así como condicionales y estructuras de control como try/except/else.

Ejercicios Progresivos

Ejercicio 28.1 – Registro básico de alumnos:

Crear un programa que permita registrar alumnos para un curso de informática. Cada alumno debe ingresar su nombre completo y su número de DNI. El sistema debe permitir la carga de múltiples alumnos y mostrar al final el total de inscriptos.

Ejercicio 28.2 – Selección de curso:

Ampliar el programa anterior para que cada alumno elija solo uno de los tres cursos disponibles:

  1. Machine Learning
  2. Data Science
  3. Programación Orientada a Objetos (POO)

Agregar el curso elegido a la información del alumno y mostrar la lista agrupada por curso.

Ejercicio 28.3 – Validación de inscripciones y cambios:

Incorporar una validación para evitar que un mismo alumno (por su número de DNI) se inscriba más de una vez. Si el alumno ya está registrado, mostrar un mensaje y ofrecerle la posibilidad de cambiar el curso elegido, siempre que la inscripción esté abierta. Una vez cerrada la inscripción, no se permiten más cambios. Mostrar un resumen final con la cantidad de alumnos por curso.

Ejercicio 28.4 – Registro de nota del diagnóstico:

Una vez cerrada la inscripción, se toma un examen diagnóstico. Se debe registrar la nota del examen para cada alumno. Si un alumno no se presentó, su nota será 0. Agregar esta información al registro y mostrar un listado con nombre, DNI, curso elegido y nota.

Ejercicio 28.5 – Validación de nota con manejo de errores:

Al momento de cargar las notas del diagnóstico, controlar que el valor ingresado sea un número válido entre 0 y 10. Si el valor es incorrecto, mostrar un mensaje de error y permitir el reingreso. Usar try/except/else para el control.

Ejercicio 28.6 – Asignación de comisiones:

Asignar a cada alumno una comisión según la siguiente escala:

  •  Nota de 1 a 4 → Comisión C
  • Nota de 5 a 7 → Comisión B
  • Nota mayor a 7 → Comisión A

Agregar esta información al registro. Mostrar cuántos alumnos hay por curso y por comisión.

Ejercicio 28.7 – Asignación de docentes:

Cada comisión de cada curso tendrá dos docentes: uno para teoría y otro para práctica. Asignar un nombre ficticio a cada docente y mostrar una tabla donde se indique: curso, comisión, docentes asignados y cantidad de alumnos en esa comisión.

Ejercicio 28.8 – Asignación de aulas

Cada aula tiene una capacidad máxima:

  • A1: 300 personas
  • A2: 250 personas
  • A3: 200 personas

Asignar las comisiones a aulas disponibles, evitando superposiciones horarias dentro de un mismo curso. Una comisión no puede estar en más de un aula al mismo tiempo, ni dividirse en múltiples aulas. Mostrar un listado que indique: aula, curso, comisión y cantidad de alumnos asignados.

Ejercicio 28.9 – Estadísticas generales:

Realizar un análisis final que indique:

A)    ¿Cuál fue el curso más elegido por los alumnos?

B)    ¿Cuál fue la comisión con más alumnos?

C)    Por cada curso, ¿qué comisión tuvo más inscriptos?

Ejercicio 28.10 – Proyecto final

Integrar todos los pasos anteriores en un solo programa funcional. El sistema debe permitir la inscripción, validaciones, carga de notas, asignaciones de comisiones y aulas, y generación de estadísticas. Se debe garantizar la integridad de los datos y el uso correcto de estructuras como listas, diccionarios, listas de diccionarios y validaciones con condicionales y excepciones.