Помогите создать функцию для подсчёта процентов от введенного числа

colors = {1 : {'Желтый': 3.1, 'Красный': 96.9},
       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, "->", new_color[key])
procent(**new_color)
Какой номер цвета? :3

Номер цвета: 3 C,U
Синий: 50.0 %
Черный: 50.0 %

Количество грамм краски?:345
Синий -> 50.0
Черный -> 50.0

Вместо Синий -> 50.0 и Черный -> 50.0 должно быть Синий -> 172.5 и Черный -> 172.5


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

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

Вот верный вариант:

colors = {1 : {'Желтый': 3.1, 'Красный': 96.9},
       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)
→ Ссылка
Автор решения: SergFSM

кажется в исходном коде есть лишние строки. так вроде должно сработать:

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

n = int(input("Какой номер цвета? :"))
print()
print('Номер цвета:', n, 'C,U')
x = float(input("Количество грамм краски?:"))
print('\n'.join(f'{k} -> {round(v*x/100,2)}' for k,v in colors[n].items()))

#
Синий -> 172.5
Черный -> 172.5
→ Ссылка