1-е - хорошее решение, я делаю аналогично.
2-й - вам следует подумать о том, чтобы каждый день назначать степень 2, чтобы было легко преобразовать эти числа в двоичные с помощью bin () и сравнить с ними, просто сделав &.
>>> mon, tue, wed, thu, fri, sat, sun = (pow(2, i) for i in range(7))
>>> bin(mon)
'0b1'
>>> bin(sun)
'0b1000000'
# create range:
>>> x = mon | wed | fri
>>> bin(x)
'0b10101'
# check if day is in range:
>>> x & mon
1
>>> x & tue
0
Проблема с bin состоит в том, что вы должны добавить 0 в начало, чтобы получить строку длиной 7 символов,
но вы также можете написать свою собственную версию так:
bin = lambda n:"".join([str((n >> y) & 1) for y in range(7-1, -1, -1)])