Como gerar cores hexadecimais aleatórias no Python?

from random import random
hex = '#%06X' % round(random() * 0xffffff)
print(hex)

Ou:

from random import random
hex = '#{:06X}'.format(round(random() * 0xffffff))
print(hex)

Sendo assim, poderíamos criar uma função:

from random import random

def random_hex_color(end = 0xffffff): return '#%06X' % round(random() * end)

random_hex_color() # '#B52D1B' random_hex_color() # '#85D257'

Explicando o código

A lógica é bem parecida com [a geração de cores aleatórias pelo PHP]({%link _posts/2021-02-03-como-gerar-cores-aleatorias-com-php.md %}) e [como gerar cores aleatórias com Javascript?]({% link _posts/2021-02-20-como-gerar-cores-aleatorias-no-javascript.md %}).

A função random.random gerará um número aleatório float de 0 a 1. Multiplicamos o resultado por 0xffffff, que é uma notação hexadecimal, representando o valor máximo de uma cor hexadecimal. A função round garante que o valor sempre será um int.

Em seguida, utilizamos a string %06X ou {:06X} para formatar o número para hexadecimal, preenchendo sempre com até 6 zeros a esquerda, para que não forme uma cor hexadecimal inválida. A string é sempre iniciada por #, pois é utilizada no CSS para identificar cores hexadecimais.