Проверка результатов функции (процент от числа)

>>>>
colors = {1 : {'Желтый': 3.1, 'Красный': 96.9, 'Синий': 38.7},
          2 : {'Желтый': 12.5, 'Черный': 87.5},
          3 : {'Синий': 50.0, 'Черный': 50.0}}

n = int(input("Какой номер цвета? :"))
print()
print('Номер цвета:', n, 'C,U')
new_color = {}

for key in colors[n]:
    print(key + ':', colors[n][key], '%')
print()
for s in colors.values():
   new_color.update(colors[n])

x = float(input("Количество грамм краски?:"))
def procent(**new_color):
    for key in new_color:
        print(key, "->", round(x * (new_color[key] / 100), 2)) # находим процент от 
числа

procent(**new_color)
>>>>







>>>>
Какой номер цвета? :1

Номер цвета: 1 C,U
Желтый: 3.1 %
Красный: 58.2 %
Синий: 38.7 %

Количество грамм краски?:567.3
Желтый -> 17.59
Красный -> 330.17
Синий -> 219.55
>>>>

Сумма всех цветов 567,31 отличается от заданной. Подскажите как устранить проблему? 

Ответы (1 шт):

Автор решения: Tehnorobot

Вот один из вариантов решения:

colors = {1 : {'Желтый': 3.1, 'Красный': 96.9, 'Синий': 38.7},
          2 : {'Желтый': 12.5, 'Черный': 87.5},
          3 : {'Синий': 50.0, 'Черный': 50.0}}

n = int(input("Какой номер цвета? :"))
print()
print('Номер цвета:', n, 'C,U')
new_color = {}

for key in colors[n]:
    print(key + ':', colors[n][key], '%')
print()
for s in colors.values():
   new_color.update(colors[n])

x = float(input("Количество грамм краски?:"))
def procent(**new_color):
    res = 0 # результирующая переменная
    for key in new_color:
        res += x * (new_color[key] / 100) # находим процент от числа
    print(res)

procent(**new_color)
→ Ссылка