Рассмотрим, если ваш текущий месяц - март, а соответствующий список дат - [2, 9, 16, 23, 30, 6]
, а сегодняшняя дата - 30
, в основном мы делаем следующее:
- Проверка наличия какой-либо даты в
color_sack
это больше, чем
сегодняшняя дата, если это так, мы получаем эту дату. В нашем случае ни одна дата в списке не превышает 30
. - Если условие
1st
не выполняется, мы теперь выясняем индекс максимальной даты в color_sack
, в нашем случае максимальная дата равна 30
и его индекс 4
, теперь мы выяснили, есть ли idx
больше индекса максимальной даты в списке, если это так, мы возвращаем эту дату.
Этот алгоритм будет соответствовать любым датам в текущем месяце, например, March
. Как только начинается новый месяц, например. «Апрель начинается, список будет обновлен с новыми датами с понедельника по апрель до начала мая». Таким образом, этот алгоритм всегда будет соответствовать.
Попробуйте это:
def next_rubbish_day(color_sack, todays_date):
for idx, day in enumerate(color_sack):
if day > todays_date or idx > color_sack.index(max(color_sack)):
yield day
print(next(next_rubbish_day(color_sack, 6)))
print(next(next_rubbish_day(color_sack, 10)))
print(next(next_rubbish_day(color_sack, 21)))
print(next(next_rubbish_day(color_sack, 30)))
print(next(next_rubbish_day(color_sack, 31)))
ВЫХОД:
9
16
23
6
6