[ 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 (+41)

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


 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)