En este caso, os dejo una propuesta de ejercicios con diccionarios para practicar lo explicado cuando hablamos de diccionarios.
Ejercicio 1: Frecuencia de palabras en un texto
Escribe un programa que cuente la frecuencia de cada palabra en un texto ingresado por el usuario.
Una posible solución sería:
def contar_frecuencia_palabras(texto):
# Convertir el texto a minúsculas y dividirlo en palabras
palabras = texto.lower().split()
# Crear un diccionario para almacenar la frecuencia de cada palabra
frecuencia_palabras = {}
# Contar la frecuencia de cada palabra
for palabra in palabras:
if palabra in frecuencia_palabras:
frecuencia_palabras[palabra] += 1
else:
frecuencia_palabras[palabra] = 1
return frecuencia_palabras
# Solicitar al usuario que ingrese el texto
texto_usuario = input("Introduce un texto: ")
# Contar la frecuencia de cada palabra en el texto
frecuencia = contar_frecuencia_palabras(texto_usuario)
# Imprimir el resultado
print("Frecuencia de palabras:")
for palabra, frecuencia in frecuencia.items():
print(palabra + ":", frecuencia)
Ejercicio 2: Búsqueda de nombres y teléfonos en un diccionario
Escribe un programa que tenga un diccionario de contactos hardcodeado (no hay que pedir al usuario que introduzca los datos, sino que los escribimos directamente en el código). Las claves del diccionario son nombres de personas y los valores son sus números de teléfono.
El programa da la opción al usuario de introducir un texto de búsqueda y realiza la búsqueda para ese texto tanto en los nombres como en los números de teléfono. Si se encuentra una coincidencia por nombre, el programa devuelve por pantalla el número de teléfono asociado. Si se encuentra una coincidencia por teléfono, el programa devuelve por pantalla el nombre del usuario. Si no se encuentra ninguna coincidencia se indica por pantalla.
El programa continúa ofreciendo una búsqueda al usuario hasta que este introduce la palabra “salir”.
Una solución sería:
# Diccionario de contactos hardcodeado
contactos = {
"Juan": "123456789",
"María": "987654321",
"Pedro": "654987321",
"Ana": "789123456",
"Luisa": "456321987"
}
# Bucle para realizar búsquedas
while True:
# Solicitar al usuario que introduzca una búsqueda
busqueda = input("Introduce un nombre o un número de teléfono (o 'salir' para finalizar): ")
# Comprobar si el usuario desea salir del programa
if busqueda.lower() == "salir":
break
# Buscar por nombre
if busqueda in contactos:
print("El número de teléfono de", busqueda, "es:", contactos[busqueda])
# Buscar por número de teléfono
elif busqueda in contactos.values():
nombre = [nombre for nombre, telefono in contactos.items() if telefono == busqueda][0]
print("El nombre de la persona con el número de teléfono", busqueda, "es:", nombre)
else:
print("No se encontró ninguna coincidencia.")
Ejercicio 3: Creamos Diccionario y realizamos operaciones
Crear el siguiente diccionario:
clientes = [{'id_cliente':100, 'edad': 28, 'productos':['P1', 'P2']},
{'id_cliente':101, 'edad': 33, 'productos':['P3']},
{'id_cliente':102, 'edad': 37, 'productos':['P1', 'P2', 'P5']},
{'id_cliente':103, 'edad': 41, 'productos':['P3', 'P6']}
]
Con el diccionario hay que realizar las siguientes operaciones y mostrar el resultado de las mismas por pantalla:
- Obtener la edad del segundo cliente de la lista
- Crear un bucle que recorra todos los identificadores de cliente
- Crear un bucle que permita calcular la edad media de los clientes
- Crear una lista que guarde todos productos de los clientes
- Obtener los elementos únicos de la lista anterior
- Añadir dos campos adicionales a cada diccionario:
- num_prod: número de productos de cada cliente
- tipo_cliente: vale ‘S’ si el cliente tiene 2 o más productos, ‘N’ en caso contrario
- Realizar un cálculo a elegir por el alumno sobre el campo ‘num_prod’. (sumatorios, valores medios, etc…)
Solución:
# Diccionario inicial de clientes
clientes = [
{'id_cliente': 100, 'edad': 28, 'productos': ['P1', 'P2']},
{'id_cliente': 101, 'edad': 33, 'productos': ['P3']},
{'id_cliente': 102, 'edad': 37, 'productos': ['P1', 'P2', 'P5']},
{'id_cliente': 103, 'edad': 41, 'productos': ['P3', 'P6']}
]
# 1.
print("1.-Obtener la edad del segundo cliente de la lista")
print("---------------------------------------------------")
edad_segundo_cliente = clientes[1]['edad']
print(f"Edad del segundo cliente: {edad_segundo_cliente}")
# 2.
print("\n2.-Crear un bucle que recorra todos los identificadores de cliente")
print("---------------------------------------------------")
print("Identificadores de los clientes:")
for cliente in clientes:
print(cliente['id_cliente'])
# 3.
print("\n3.-Crear un bucle que permita calcular la edad media de los clientes")
print("---------------------------------------------------")
total_edad = 0
for cliente in clientes:
total_edad += cliente['edad']
edad_media = total_edad / len(clientes)
print(f"Edad media de los clientes: {edad_media:.2f}")
# 4.
print("\n4.-Crear una lista que guarde todos los productos de los clientes")
print("---------------------------------------------------")
productos = []
for cliente in clientes:
productos.extend(cliente['productos'])
print(f"Lista de productos de todos los clientes: {productos}")
# 5.
print("\n5.-Obtener los elementos únicos de la lista de productos")
print("---------------------------------------------------")
productos_unicos = list(set(productos))
print(f"\nProductos únicos: {productos_unicos}")
# 6.
print("\n6.-Añadir dos campos adicionales a cada diccionario: 'num_prod' y 'tipo_cliente'")
print("---------------------------------------------------")
for cliente in clientes:
cliente['num_prod'] = len(cliente['productos']) # Número de productos
cliente['tipo_cliente'] = 'S' if cliente['num_prod'] >= 2 else 'N' # Tipo de cliente
print("Clientes con los nuevos campos 'num_prod' y 'tipo_cliente':")
for cliente in clientes:
print(cliente)
# 7.
print("\n7.-Suma total de productos de todos los clientes")
print("---------------------------------------------------")
total_productos = 0
for cliente in clientes:
total_productos += cliente['num_prod']
print(f"Suma total de productos entre todos los clientes: {total_productos}")
Ejercicio 4: Cálculo del beneficio del mes
Trabajas en el departamento financiero y tienes que calcular el beneficio del mes a partir de los datos de las ventas y los gastos. Obviamente, el beneficio será la resta del total de ventas menos el total de gastos.
La información de ventas y gastos se te proporciona en dos diccionarios de idéntica estructura. Una clave que indica el producto y un valor que es otro diccionario que contiene las claves cantidad y precio unitario (los valores de estas claves son el numero de unidades del producto y el precio unitario del producto, respectivamente).
Ambos diccionarios están hardcodeados. Un ejemplo de los mismos sería:
ventas = {"Producto A": {"cantidad": 10, "precio_unitario": 20},
"Producto B": {"cantidad": 5, "precio_unitario": 15},
"Producto C": {"cantidad": 8, "precio_unitario": 25}}
gastos = {"Producto A": {"cantidad": 5, "precio_unitario": 15},
"Producto B": {"cantidad": 3, "precio_unitario": 10},
"Producto D": {"cantidad": 2, "precio_unitario": 30}}
El programa tiene que funcionar para cualquier modificación de los diccionarios.
Por ejemplo: para los diccionarios puestos de ejemplo en el ejercicio, el resultado sería:
Ventas = 10 x 20 + 5 x 15 + 8 x 25 = 475
Gastos = 5 x 15 + 3 x 10 + 2 x 30 =165
beneficio = 310
Una posible solución sería la siguiente:
# Diccionarios de ventas y gastos
ventas = {"Producto A": {"cantidad": 10, "precio_unitario": 20},
"Producto B": {"cantidad": 5, "precio_unitario": 15},
"Producto C": {"cantidad": 8, "precio_unitario": 25}}
gastos = {"Producto A": {"cantidad": 5, "precio_unitario": 15},
"Producto B": {"cantidad": 3, "precio_unitario": 10},
"Producto D": {"cantidad": 2, "precio_unitario": 30}}
# Calcular el total de ventas
total_ventas = sum(producto["cantidad"] * producto["precio_unitario"] for producto in ventas.values())
# Calcular el total de gastos
total_gastos = sum(producto["cantidad"] * producto["precio_unitario"] for producto in gastos.values())
# Calcular el beneficio
beneficio = total_ventas - total_gastos
# Presentar por pantalla los resultados
print("Ventas =", total_ventas)
print("Gastos =", total_gastos)
print("Beneficio =", beneficio)
Ejercicio 5: Cargar productos a la cesta de la compra
Realiza un programa que vaya añadiendo a la cesta de la compra los productos que el usuario vaya comprando.
El programa pide al usuario que introduzca su presupuesto y a continuación le permite realizar sus pedidos. Para cada pedido tiene que introducir el nombre del producto y las unidades que quiere comprar. Se termina de realizar pedidos cuando el usuario introduzca en producto la palabra: “salir”.
Los productos que puede comprar el usuario son los del siguiente diccionario que tienes que copiar en tu código:
Productos={“Lampara”:7, “Mesa”: 5, “Silla”:4, “Papelera”:2}
La clave es el nombre del producto y el valor es el precio de una unidad de producto.
Si se excede el presupuesto, no se permite realizar la compra y se indica que con dicha compra el usuario excede su presupuesto.
Al final, el programa presenta por pantalla el listado de los productos en la cesta de la compra y el total del coste.
Solución:
# Diccionario de productos con sus precios
productos = {"Lampara": 7, "Mesa": 5, "Silla": 4, "Papelera": 2}
# Solicitar al usuario que introduzca su presupuesto
presupuesto = float(input("Introduce tu presupuesto: "))
total_coste = 0
cesta_de_compra = {}
# Bucle para realizar pedidos
while True:
# Solicitar al usuario que introduzca el nombre del producto
nombre_producto = input("Introduce el nombre del producto (o 'salir' para finalizar): ")
# Comprobar si el usuario desea salir del programa
if nombre_producto.lower() == "salir":
break
# Verificar si el producto está en la lista
if nombre_producto in productos:
# Solicitar al usuario que introduzca las unidades del producto
unidades = int(input(f"Introduce las unidades de '{nombre_producto}': "))
# Calcular el coste del producto
coste_producto = productos[nombre_producto] * unidades
# Comprobar si el coste del producto excede el presupuesto
if total_coste + coste_producto > presupuesto:
print("Con esta compra excedes tu presupuesto.")
else:
# Agregar el producto a la cesta de compra
cesta_de_compra[nombre_producto] = unidades
total_coste += coste_producto
else:
print("Producto no disponible.")
# Imprimir la cesta de la compra y el total del coste
print("\nCesta de la compra:")
for producto, unidades in cesta_de_compra.items():
print(f"{producto}: {unidades} unidades")
print("Total del coste:", total_coste)
NOTA:
Este post es parte de la colección “Python”. Puedes ver el índice de esta colección aquí.