Dec-12-2017, 04:14 PM
Here is a quick OOP example of your market opening hours checking:
from datetime import datetime, time import time as time_time class MarketOpeningHours: """Representation of market opening hours (e.g. 13:00 - 14:00)""" def __init__(self, opening_time: time, closing_time: time): if closing_time <= opening_time: raise Exception("Closing time must be later than opening time!") self.opening_time = opening_time self.closing_time = closing_time def is_open(self) -> bool: return self.opening_time <= datetime.now().time() <= self.closing_time class Market: """Representation of market""" def __init__(self): self.opening_hours_list = [] def add_opening_hours(self, opening_hours: MarketOpeningHours): self.opening_hours_list.append(opening_hours) def is_open(self) -> bool: for opening_hours in self.opening_hours_list: if opening_hours.is_open(): return True return False class MarketsList: """Representation of markets list""" def __init__(self): self.markets = [] def add_market(self, market: Market): self.markets.append(market) def is_any_market_open(self) -> bool: for market in self.markets: if market.is_open(): return True return False market_a = Market() market_a.add_opening_hours(MarketOpeningHours(time(9, 0), time(11, 0))) market_a.add_opening_hours(MarketOpeningHours(time(13, 0), time(15, 0))) market_b = Market() market_b.add_opening_hours(MarketOpeningHours(time(9, 0), time(11, 0))) market_b.add_opening_hours(MarketOpeningHours(time(13, 0), time(15, 15))) market_c = Market() market_c.add_opening_hours(MarketOpeningHours(time(9, 0), time(10, 30))) market_c.add_opening_hours(MarketOpeningHours(time(11, 0), time(13, 0))) market_c.add_opening_hours(MarketOpeningHours(time(14, 0), time(15, 0))) markets_list = MarketsList() markets_list.add_market(market_a) markets_list.add_market(market_b) markets_list.add_market(market_c) while markets_list.is_any_market_open(): print(str(datetime.now().time()) + ": some market is still open - waiting") time_time.sleep(1)