Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.01 KB | None | 0 0
  1. import random
  2. import typing
  3.  
  4.  
  5. class NoBannerError(Exception):
  6.     pass
  7.  
  8.  
  9. class EmptyBannerStorageError(Exception):
  10.     pass
  11.  
  12.  
  13. class BannerStat:
  14.     def __init__(self, clicks: int, shows: int):
  15.         self._clicks = clicks
  16.         self._shows = shows
  17.  
  18.     def add_click(self) -> None:
  19.         self._clicks += 1
  20.  
  21.     def add_show(self) -> None:
  22.         self._shows += 1
  23.  
  24.     @property
  25.     def clicks(self) -> int:
  26.         return self._clicks
  27.  
  28.     @property
  29.     def shows(self) -> int:
  30.         return self._shows
  31.  
  32.     def compute_ctr(self, default_ctr: float) -> float:
  33.         """
  34.     Compute banner CTR (click through rate) as clicks / shows
  35.        If banner has zero shows - return `default_ctr`
  36.        """
  37.     if self.shows == 0:
  38.             return default_ctr
  39.         else:
  40.             return self.clicks / self.shows
  41.  
  42.  
  43. class Banner:
  44.     def __init__(self, banner_id: str, cost: int, stat: typing.Optional[BannerStat] = None):
  45.         self._banner_id = banner_id
  46.         self._cost = cost
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement