Advertisement
Norvager

Money v2.0

May 30th, 2021
1,085
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.51 KB | None | 0 0
  1. import math
  2. class Money():
  3.     ruble = None
  4.     kopeck = None
  5.     def __init__ (self, ruble, kopeck) :
  6.         self.ruble = ruble + kopeck // 100
  7.         self.kopeck = int(kopeck % 100)
  8.         pass
  9.     def makeToKopeck(self) :
  10.         return self.kopeck + self.ruble * 100
  11.     def makeToNormal(self, kop) :
  12.         self.ruble = int(kop // 100)
  13.         self.kopeck = math.fabs(int(kop % 100))
  14.         return self
  15.     # self < other
  16.     def __lt__ (self, other) :
  17.         if self.ruble < other.ruble :
  18.             return True
  19.         elif self.ruble == other.ruble :
  20.             if self.kopeck < other.kopeck :
  21.                 return True
  22.         return False
  23.     # self == other
  24.     def __eq__ (self, other) :
  25.         if self.ruble == other.ruble :
  26.             if self.kopeck == other.kopeck :
  27.                 return True
  28.         else :
  29.             return False
  30.     # self > other
  31.     def __gt__ (self, other) :
  32.         if self.ruble > other.ruble :
  33.             return True
  34.         elif self.ruble == other.ruble :
  35.             if self.kopeck > other.kopeck :
  36.                 return True
  37.         return False
  38.     # self + other
  39.     def __add__ (self, other) :
  40.         kop_1 = self.makeToKopeck()
  41.         kop_2 = other.makeToKopeck()
  42.         kop = kop_1 + kop_2
  43.         return self.makeToNormal(kop)
  44.     # self - other
  45.     def __sub__ (self, other) :
  46.         kop_1 = self.makeToKopeck()
  47.         kop_2 = other.makeToKopeck()
  48.         kop = kop_1 - kop_2
  49.         return self.makeToNormal(kop)
  50.     # self / other:float
  51.     def __truediv__ (self, other:float) :
  52.         kop = self.makeToKopeck()
  53.         # Дробного кол-ва копеек быть не может
  54.         if 0 != kop % other:
  55.             kop //= other
  56.             kop += 1
  57.         else :
  58.             kop /= other
  59.         return self.makeToNormal(kop)
  60.     # self * other:float
  61.     def __mul__ (self, other:float) :
  62.         kop = self.makeToKopeck()
  63.         kop *= other
  64.         if 0 != kop % 1 :
  65.             kop //= 1
  66.             kop += 1
  67.         return self.makeToNormal(kop)
  68.     def output (self):
  69.         print(f"Сумма: {self.ruble},{self.kopeck}руб")
  70.         pass
  71.  
  72. class RuMoney(Money):
  73.     def __init__(self, ruble, kopeck):
  74.         super().__init__(ruble, kopeck)
  75.         pass
  76.  
  77.     def __del__ (self) :
  78.         print("Счет закрыт, денег больше нет")
  79.         pass
  80.  
  81. operation = ("1 - Cравнить суммы", "2 - Сложить суммы", "3 - Вычесть суммы",
  82.              "4 - Разделить суммы", "5 - Разделить на число", "6 - Умножить на число",
  83.              "0 - Завершить")
  84. if __name__ == "__main__" :
  85.     a = int(input("Сколько рублей? Введите: "))
  86.     b = int(input("Сколько копеек? Введите: "))
  87.     ruble = RuMoney(a, b)
  88.     ruble.output()
  89.     while True:
  90.         print("Выберете операцию: ")
  91.         for i in operation:
  92.             print(i)
  93.         numOfOperation = int(input())
  94.         if numOfOperation == 1 :
  95.             a2 = int(input("Со скольким кол-вом рублей сравнить? Введите: "))
  96.             b2 = int(input("Со скольким кол-вом копеек сравнить? Введите: "))
  97.             print(f"Введенная сумма: {Money(a2,b2).ruble},{Money(a2,b2).kopeck}руб")
  98.             if ruble > Money(a2,b2) :
  99.                 print ("Исходная сумма больше!")
  100.             elif ruble < Money(a2,b2) :
  101.                 print ("Исходная сумма меньше!")
  102.             else :
  103.                 print ("Суммы равны!")
  104.         elif numOfOperation == 2 :
  105.             a2 = int(input("Сколько рублей прибавить? Введите: "))
  106.             b2 = int(input("Сколько копеек прибавить? Введите: "))
  107.             print(f"Введенная сумма: {Money(a2,b2).ruble},{Money(a2,b2).kopeck}руб")
  108.             ruble = ruble + Money(a2,b2)
  109.             ruble.output()
  110.         elif numOfOperation == 3 :
  111.             a2 = int(input("Сколько рублей вычесть? Введите: "))
  112.             b2 = int(input("Сколько копеек вычесть? Введите: "))
  113.             print(f"Введенная сумма: {Money(a2,b2).ruble},{Money(a2,b2).kopeck}руб")
  114.             ruble = ruble - Money(a2,b2)
  115.             ruble.output()
  116.         elif numOfOperation == 4 :
  117.             a2 = int(input("На какое кол-во рублей поделить? Введите: "))
  118.             b2 = int(input("На какое кол-во копеек поделить? Введите: "))
  119.             print(f"Введенная сумма: {Money(a2,b2).ruble},{Money(a2,b2).kopeck}руб")
  120.             tov = ruble.makeToKopeck() / Money(a2,b2).makeToKopeck()
  121.             print (f"Отношение сумм: {round(tov, 4)}")
  122.         elif numOfOperation == 5 :
  123.             a2 = float(input("На какое число поделить? Введите: "))
  124.             ruble = ruble / a2
  125.             ruble.output()
  126.         elif numOfOperation == 6 :
  127.             a2 = float(input("На какое число умножить? Введите: "))
  128.             ruble = ruble * a2
  129.             ruble.output()
  130.         elif numOfOperation == 0 :
  131.             print("Работа завершена!")
  132.             break
  133.         else :
  134.             print("Введите верное число.")
  135.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement