У меня имеется массив чисел от 0 до 100 с повторениями. Длина массива N>100, например. Необходимо в зависимости от значения цифры изменить ее цвет.
Какие существуют изящные способы решения этой задачи без привязки к ЯП ну или с привязкой к Python?
Пусть value
- это значение элемента в массиве.
Можно написать что-то типа:
def func(value):
if value>0 and value<=10:
color='blue'
if value>10 and value<=20:
color='green'
...
if value>90 and value<=100:
color='yellow'
return color
Но такое решение кажется мне не верным и долгим.
Общие решение (т. к. константы LIMITS
и COLORS
возможно приспособить):
LIMITS = (10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
COLORS = "blue green red white orange black magenta purple brown yellow".split()
def func(val):
for limit, color in zip(LIMITS, COLORS):
if val <= limit:
return color
else:
raise ValueError
Или то-же самое с использованием словаря:
COLORS = {10: "blue", 20: "green", 30: "red", 40: "white", 50: "orange",
60: "black", 70: "magenta", 80: "purple", 90: "brown", 100: "yellow"}
def func(val):
for limit in COLORS:
if val <= limit:
return COLORS[limit]
else:
raise ValueError
Или - опять то-же самое - с использованием модуля enum
(Питон 3.4+):
from enum import IntEnum
class Color(IntEnum):
blue = 10
green = 20
red = 30
white = 40
orange = 50
black = 60
magenta = 70
purple = 80
brown = 90
yellow = 100
def func(val):
for color, limit in Color.__members__.items():
if val <= limit:
return color
else:
raise ValueError
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пробую писать программу на Java и столкнулся со следующей проблемой: у меня есть массив данных, который я генерирую в классе1, его нужно передать...
Как сделать, чтобы все дочерние элементы block были бы в одну строку, а если они не помещаются по ширине, то переносились бы на следующую, но не каким-то...
Помогите пожалуйста с порядком выполненияНе могу понять, как сделать порядок выполнения