Suma de valores en diccionarios.
Publicado por Jorge Alberto (50 intervenciones) el 25/03/2021 23:06:05
Hola. ¿Qué tal? Estoy con un ejercicio de facultad que no puedo solucionar. Dice lo siguiente:
Por ahora, el código que implementé es:
El problema esta cuando intento calcular el total para imprimirlo. No sé cómo hacerlo. Lo que intenté es:
Pero cuando intento implementarlo, me sale:
'dict_keys' object is not subscriptable
No sé cómo seguir. Algo parecido me sucede cuando tengo que implementar ".agregar". El error a arrojar cuando la denominación no existe es sencillo, pero no sé cómo sumar cuando el valor sí existe.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Escribir una clase Caja para representar cuánto dinero hay en una caja de un
# negocio, desglosado por tipo de billete (por ejemplo, en el quiosco de la esquina hay 6 billetes
# de 500 pesos, 7 de 100 pesos y 4 monedas de 2 pesos). Las denominaciones permitidas son 1, 2,
# 5, 10, 20, 50, 100, 200, 500 y 1000 pesos. Debe comportarse según el siguiente ejemplo:
# >>> c = Caja({500: 6, 300: 7, 2: 4})
# ValueError: Denominación "300" no permitida
# >>> c = Caja({500: 6, 100: 7, 2: 4})
# >>> str(c)
# 'Caja {500: 6, 100: 7, 2: 4} total: 3708 pesos'
# >>> c.agregar({250: 2})
# ValueError: Denominación "250" no permitida
# >>> c.agregar({50: 2, 2: 1})
# >>> str(c)
# 'Caja {500: 6, 100: 7, 50: 2, 2: 5} total: 3810 pesos'
# >>> c.quitar({50: 3, 100: 1})
# ValueError: No hay suficientes billetes de denominación "50"
# >>> c.quitar({50: 2, 100: 1})
# 200
# >>> str(c)
# 'Caja {500: 6, 100: 6, 2: 5} total: 3610 pesos'
Por ahora, el código que implementé es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
denominaciones = [1,2,5,10,20,50,100,200,500,1000]
class Caja:
def __init__(self,diccionario):
self.diccionario = diccionario
self.keys = diccionario.keys()
self.values = diccionario.values()
for i in self.keys: # Si la denominación no esta en 'denominaciones' arroja el error
if i not in denominaciones:
raise ValueError('Denominación "{}" no permitida'.format(i))
def __str__(self):
# Converción a cadena de texto
return 'Caja {} total: xxxx pesos'.format(self.diccionario) # Falta agregar el total.
El problema esta cuando intento calcular el total para imprimirlo. No sé cómo hacerlo. Lo que intenté es:
1
2
3
4
5
6
7
8
9
10
11
def __init__(self,diccionario):
self.diccionario = diccionario
self.keys = diccionario.keys()
self.values = diccionario.values()
for i in self.keys: # Si la denominación no esta en 'denominaciones' arroja el error
if i not in denominaciones:
raise ValueError('Denominación "{}" no permitida'.format(i))
# ---------- Agrego estas líneas ----------------
total = 0
for i in range(len(self.diccionario)):
total += self.keys[i]*self.values[i]
Pero cuando intento implementarlo, me sale:
'dict_keys' object is not subscriptable
No sé cómo seguir. Algo parecido me sucede cuando tengo que implementar ".agregar". El error a arrojar cuando la denominación no existe es sencillo, pero no sé cómo sumar cuando el valor sí existe.
Valora esta pregunta


0