Чтобы рассчитать переходный цвет между двумя цветам добавьте себе функцию

def blend_colors(color1, color2, blend=0.5):
    color1 = color1[1:]
    color2 = color2[1:]
    red = int((int(color1[:2], 16) * (1 - blend) + int(color2[:2], 16) * (blend)))
    green = int((int(color1[2:4], 16) * (1 - blend) + int(color2[2:4], 16) * (blend)))
    blue = int((int(color1[4:6], 16) * (1 - blend) + int(color2[4:6], 16) * (blend)))

    zpad = lambda x: x if len(x) == 2 else '0' + x
    return "#" + zpad(hex(red)[2:]) + zpad(hex(green)[2:]) + zpad(hex(blue)[2:])

использовать ее так

blend_colors("#FF0000", "#00FF00", 0);

вернет левый цвет "#FF0000" то есть красный

blend_colors("#FF0000", "#00FF00", 1);

вернет правый цвет "#00FF00" то есть зеленый

blend_colors("#FF0000", "#00FF00", 0.5);

вернет средний цвет между красным и зеленым

Таким образом меняя третий аргумент функции от нуля до единицы можно получить любой цвет между красным и зеленым.

Задание

Добавить измение цвета фона. А-ля наступление ночи при сдвиге солнца