Я играл с вашим кодом. Кажется, это своего рода работа. Он выясняет, какие дни недели существуют в диапазоне дат. Проблема, с которой вы сталкиваетесь, возникает в том случае, если в вашем диапазоне дат нет ни пятницы, ни субботы (обратите внимание, что у вас есть переменная с именем mon, которая задается при поиске ключа пятница).
Так что, похоже, ваша проблема в том, что вы должны учесть случай, когда у вас нет обоих дней недели в диапазоне дат, который вы предоставляете в качестве входных данных. В этом случае либо неделя, либо неделя ('пятница') и неделя ('суббота') не будут существовать на вашей карте week , поэтому mon и / или sat будет None , и у вас возникнет проблема.
Чтобы ваш код работал, я добавил его ниже:
class Rec:
def __init__(self, start, end):
self.mission_start_date = start
self.mission_end_date = end
self = [
Rec("2019-3-31", "2019-4-1")
]
get_compensation(self)
Это позволяет мне заставить ваш код обрабатывать пару дат. Если диапазон дат, которые я здесь указываю, включает в себя как пятницу, так и субботу, ваш код работает нормально. В противном случае это точно та ошибка, о которой вы говорите.
Если вы измените строки:
mon = week.get('Friday')
sat = week.get('Saturday')
до:
mon = week.get('Friday') if 'Friday' in week else 0
sat = week.get('Saturday') if 'Saturday' in week else 0
тогда ваш код не падает ни для каких диапазонов дат, с которыми я его тестировал. Я не знаю, вычисляет ли он результаты, которые вы хотите, потому что вы не держитесь за результаты своих вычислений и не возвращаете их.