[ Foro de Python ]

TypeError linea 19

24-Nov-2018 21:41
Invitado (Nur)
1 Respuestas

# Hola este es un ejemplo de una clase que no logro hacer correr por que me dice error,.. no logro encontrar solución..

 
porc = input("Introduzca un numero: ") 
 
producto = {"Arroz" : 1000, "Harina" : 200, "Salsa" : 500, "Pasta" : 3500} #creando un diccionario
Clave = producto.keys() #accediendo a la clave
valor = producto.values() #accediendo al valor
 
print(Clave)
print(valor)
 
suma1 = 0
 
for i in valor:
	suma1 += i
 
format = '%-*s%*.2f'
aumentos = valor
aumentos[0] = (valor[0]*porc)/100+aumentos[0]
aumentos[1] = (valor[1]*porc)/100+aumentos[1]
aumentos[2] = (valor[2]*porc)/100+aumentos[2]
aumentos[3] = (valor[3]*porc)/100+aumentos[3]
 
print(aumentos)
print("Porcentaje de aumentos: ", "{:,.2f}".format(porc))
print ("----------------------------------")
print (aumentos)
print ("----------------------------------")
suma = 0
 
for i in aumentos:
	suma += i
 
 
print ("La suma de los precios a la fecha: ", "{:,.2f}".format(suma1))
print ("La suma de los precios aumento: ", "{:,.2f}".format(suma))
 
diferencia = suma - suma1
 
print ("La diferencia es: ", "{:,.2f}".format(diferencia))
 


 


04-Dec-2018 20:16
Nacho Cabanes (+37)

Lo he probado con Python 2.7 y me ha funcionado:

 
Introduzca un numero:  3
['Pasta', 'Salsa', 'Arroz', 'Harina']
[3500, 500, 1000, 200]
[3605, 515, 1030, 206]
('Porcentaje de aumentos: ', '3.00')
----------------------------------
[3605, 515, 1030, 206]
----------------------------------
('La suma de los precios a la fecha: ', '5,200.00')
('La suma de los precios aumento: ', '5,356.00')
('La diferencia es: ', '156.00')
 


 
En Python 3 da el error:

 
TypeError: 'dict_values' object does not support indexing
 


Porque "dict_values" no es una lista. Puedes forzarlo (aunque quedarán otras correcciones en el resto del programa) con

 
Clave = list(producto.keys()) #accediendo a la clave
valor = list(producto.values()) #accediendo al valor
 


 






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...