def clamp(x):
return max(0, min(x, 255))
"#{0:02x}{1:02x}{2:02x}".format(clamp(r), clamp(g), clamp(b))
При этом используется предпочтительный метод форматирования строки, как , описанный в PEP 3101 .Он также использует min()
и max
, чтобы 0 <= {r,g,b} <= 255
.
Обновление добавило функцию зажима, как предложено ниже.
Обновление Из заголовка вопроса и данного контекста должно быть очевидно, что в [0,255] ожидается 3 дюйма и всегда будет возвращаться цвет при пропуске 3 таких целых.Однако, из комментариев, это может быть неочевидно для всех, поэтому позвольте прямо заявить:
При условии трех int
значений будет возвращен действительный шестнадцатеричный триплет, представляющий цвет,Если эти значения находятся между [0,255], то они будут обрабатываться как значения RGB и возвращать цвет, соответствующий этим значениям.