jmooremcc

BaseballStat

May 31st, 2022
822
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.71 KB | None | 0 0
  1.  
  2. #Baseball Math Module
  3. # by JayMo
  4.  
  5. OUTS_PER_INNING = 3
  6.  
  7. class BaseballStat:
  8.     def __init__(self, stat=0):
  9.         self._stat = stat
  10.  
  11.     @property
  12.     def stat(self):
  13.         return self._stat
  14.  
  15.     @property
  16.     def decimal(self):
  17.         innings = int(self._stat)
  18.         outs = round((self._stat - innings) * 100)/10
  19.         return int(innings*OUTS_PER_INNING + outs)
  20.  
  21.     @decimal.setter
  22.     def decimal(self, value):
  23.         i, o = divmod(value,OUTS_PER_INNING)
  24.         self._stat = i + o*0.1
  25.  
  26.     @property
  27.     def innings(self):
  28.         return int(self._stat)
  29.  
  30.     @property
  31.     def outs(self):
  32.         o = round((self._stat - self.innings) * 100)/10
  33.         return int(o)
  34.    
  35.     def addInnings(self, stat):
  36.         if type(stat) == int:
  37.             self._stat += stat
  38.            
  39.     def addOuts(self, stat):
  40.         if type(stat) == int:
  41.             if stat >= OUTS_PER_INNING:
  42.                 innings, outs = divmod(stat,OUTS_PER_INNING)
  43.             else:
  44.                 innings = 0
  45.                 outs = stat
  46.                
  47.             outs *= 0.1
  48.             stat = innings + outs
  49.             self._stat = self.__add__(stat)._stat
  50.  
  51.     def __add__(self, other):
  52.         if type(other) == BaseballStat:
  53.             stat = self._stat + other.stat
  54.         else:
  55.             stat = self._stat + other
  56.  
  57.         innings = int(stat)
  58.         outs = (stat - innings) * 10
  59.         i, o = divmod(outs,OUTS_PER_INNING)
  60.         innings += i
  61.         stat = innings + int(o)/10
  62.  
  63.         return BaseballStat(stat)
  64.  
  65.     def __iadd__(self, other):
  66.         self._stat = self.__add__(other)._stat
  67.         return self
  68.  
  69.     def __eq__(self, other):
  70.         if type(other) == BaseballStat:
  71.             return self._stat == other._stat
  72.  
  73.     def __lt__(self, other):
  74.         if type(other) == BaseballStat:
  75.             return self._stat < other._stat
  76.  
  77.     def __gt__(self, other):
  78.         if type(other) == BaseballStat:
  79.             return self._stat > other._stat
  80.  
  81.     def __le__(self, other):
  82.         if type(other) == BaseballStat:
  83.             return self._stat <= other._stat
  84.  
  85.     def __ge__(self, other):
  86.         if type(other) == BaseballStat:
  87.             return self._stat >= other._stat
  88.  
  89.     def __repr__(self):
  90.         return f"{self.__class__.__name__}: {self.stat}"
  91.  
  92.  
  93.  
  94. if __name__ == "__main__":
  95.     s1 = BaseballStat(3.2)
  96.     s2 = BaseballStat(1.2)
  97.     print(f"{s1=}")
  98.     print(f"{s2=}")
  99.     s3 = s1 + s2
  100.     print(f"{s3=}")
  101.     print(f"{s1.innings=}")
  102.     print(f"{s1.outs=}")
  103.     s1.addOuts(4)
  104.     s1.addInnings(5)
  105.     s2 = BaseballStat()
  106.     s2.decimal = 26
  107.     s1 += s2
  108.     print(s1)
  109.     print(s2)
  110.     print(f"{s2.decimal=}")
  111.  
  112.     print("Finished...")
  113.    
Advertisement
Add Comment
Please, Sign In to add comment