Untitled
import time import random # wages - rate*hour*<num of orders currently holding> WAGE_PER_HOUR = 10 def retry(max_attempts=3, delay=1): """Retry decorator to attempt function execution multiple times.""" def decorator(func): # @wraps(func) def wrapper(*args, **kwargs): for attempt in range(max_attempts): try: return func(*args, **kwargs) except Exception as e: print(f"Attempt {attempt + 1} failed: {e}") time.sleep(delay) print(f"Failed to execute {func.__name__} after {max_attempts} attempts.") return [] # Return empty list if all retries fail return wrapper return decorator def retry1(max_attempts = 4, delay =2): def decorator(func): def wrapper(*args, **kwargs): for attempt in range(max_attempts): try: return func(*args, **kwargs) except Exception as e: print(f"Attempt {attempt} failed: Error {e}") time.sleep(delay) return [] return wrapper return decorator @retry1(max_attempts=3, delay=1) def get_dasher_orders(): if random.random() < 0.9: # Simulate a failure 30% of the time raise Exception("Failed to fetch orders") times = ["order1 Pickup 1", "order2 Pickup 2", "order1 Deliver 5", "order3 Pickup 7", "order2 Deliver 12", "order3 Deliver 20"] return times class PaymentCalculator: def __init__(self, wage_rate_per_hour): self.wage_rate_per_hour = wage_rate_per_hour def is_rush_hour(self, cur_time, rush_hours): if not rush_hours: return False for start, end in rush_hours: if start <= cur_time <= end: return True return False def get_dasher_wage(self, dasher_id, rush_hours=None): events = get_dasher_orders() total_wages = 0 active_orders = {} for event in events: order_id, event_type, time = event.split(" ") if event_type == "Pickup": active_orders[order_id] = int(time) elif event_type == "Deliver": pickup_time = active_orders[order_id] elapsed_time_in_hours = (int(time) - pickup_time) / 60 wage = self.wage_rate_per_hour * (2 if self.is_rush_hour(time, rush_hours) else 1) price = wage * elapsed_time_in_hours * len(active_orders) total_wages += price del active_orders[order_id] return round(total_wages, 2) calculator = PaymentCalculator(10) print(calculator.get_dasher_wage(6)) print("SDF SDF ".split())
Leave a Comment