Я не делаю Python, но я бы предложил реализовать кейс
https://jaxenter.com/implement-switch-case-statement-python-138315.html
def switch_demo(argument):
switcher = {
0: "229954",
1: "229954",
2: "ABC878",
3: "F9E79F",
4: "FBD567",
5: "F9C169"
}
используя что-то вроде
bg = switcher.get(argument,"E67C73")
Здесь вам нужно превратить тест в число от 0 до 5 - как я уже говорил, я не делаю Python, но вероятным решением должен быть словарь
Если нет, то попробуйте
bg = "E67C73"
if dp <= break_point_1: bg = "229954"
elif dp > break_point_1 and dp <= break_point_2: bg = "ABC878"
elif dp > break_point_2 and dp <= break_point_3: bg = "F9E79F"
elif dp > break_point_3 and dp <= break_point_4: bg = "FBD567"
elif dp > break_point_4 and dp <= break_point_5: bg = "F9C169"
Тогда имейте ОДИН
metrics += '<td style = "background-color:#' + bg + '">' + str(dp) + symbol + '</td>'
metrics += '''</tr>'''
Нет необходимости в + ' '
, так как игнорируется в HTML. Вместо этого установите заполнение ячейки