Функция map Python
Есть задача:
Создать функцию from_hex_to_rgb, которая принимает на вход строку - закодированный код цвета в формате RGB и возвращает кортеж из трех значений (оттенок_красного, оттенок_зеленого, оттенок_синего).
Вот посмотрите примеры:
from_hex_to_rgb(#000000) => (0, 0, 0)
from_hex_to_rgb(#FFFFFF) => (255, 255, 255)
from_hex_to_rgb(#FF0000) => (255,0, 0)
from_hex_to_rgb(#00FF00) => (0,255, 0)
from_hex_to_rgb(#0000FF) => (0,0,255)
from_hex_to_rgb(#FFFFFF) => (255,255,255)
from_hex_to_rgb(#87CEEB) => (135,206,235)
from_hex_to_rgb(#87CEFA) => (135,206,250)
from_hex_to_rgb(#191970) => (25,25,112)
Как только функция будет готова, ее необходимо применить ко всем элементам списка colors при помощи функции map. Ниже уже имеется готовый список colors и цикл обхода результата функции map. Добавьте только название функции внутри вызова map
Вот шаблон кода
def from_hex_to_rgb(color: str) -> tuple:
pass
colors = ['#B22222', '#DC143C', '#FF0000', '#FF6347', '#FF7F50', '#CD5C5C', '#F08080', '#E9967A',
'#FA8072', '#FFA07A', '#FF4500', '#FF8C00', '#FFA500', '#FFD700', '#B8860B', '#DAA520',
'#EEE8AA', '#BDB76B', '#F0E68C', '#808000', '#FFFF00', '#9ACD32', '#556B2F', '#6B8E23',
'#7CFC00', '#7FFF00', '#ADFF2F']
for red, green, blue in map(..., colors):
print(f"Red={red}, Green={green}, Blue={blue}")
Вот мой код РЕШЕНИЕ:
def from_hex_to_rgb(color: str) -> tuple:
red = int(color[1:2], 16)
green = int(color[2:3], 16)
blue = int(color[1:2], 16)
return red, green, blue
colors = ['#B22222', '#DC143C', '#FF0000', '#FF6347', '#FF7F50', '#CD5C5C', '#F08080', '#E9967A',
'#FA8072', '#FFA07A', '#FF4500', '#FF8C00', '#FFA500', '#FFD700', '#B8860B', '#DAA520',
'#EEE8AA', '#BDB76B', '#F0E68C', '#808000', '#FFFF00', '#9ACD32', '#556B2F', '#6B8E23',
'#7CFC00', '#7FFF00', '#ADFF2F']
for red, green, blue in map(from_hex_to_rgb, colors):
print(f"Red={red}, Green={green}, Blue={blue}")
Но решение не правильное. КАК сделать правильно?
Ответы (1 шт):
У вас функция неправильно вытаскивала цифры из hex rgb. Например, для "#123456" ваша функция вытащила бы print(color[1:2], color[2:3], color[1:2]): 1 2 1, а не 12 34 56
Попробуйте так:
def from_hex_to_rgb(color: str) -> tuple:
red = int(color[1:3], 16)
green = int(color[3:5], 16)
blue = int(color[5:7], 16)
return red, green, blue