Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from functools import total_ordering
  3. @total_ordering
  4. class Fraction:
  5. def __init__(self,numerator,denominator):
  6. numerator/denominator
  7. self.numerator = numerator
  8. self.denominator = denominator
  9. def _reduce(self): #сокращение
  10. a = self.numerator
  11. b = self.denominator
  12. while b!=0:
  13. a,b=b,a%b
  14. self.numerator//=a
  15. self.denominator//=a
  16. return self
  17. def __str__(self):
  18. self._reduce
  19. return str(self.numerator)+"/"+str(self.denominator)
  20. def __add__ (first, second): # +
  21. return Fraction(first.numerator*first.denominator+second.numerator*second.denominator, second.denominator* first.denominator)
  22. def __float__(self):
  23. return self.numerator/self.denominator
  24. def __eq__ (first,second): # ==
  25. first._reduce()
  26. second._reduce()
  27. return first.numerator==second.numerator and first.denominator== second.denominator
  28. def __lt__ (right,left): # <
  29. first._reduce()
  30. second._reduce()
  31. return first.numerator*second.denominator-first.denominator*second.numerator
  32. def __mul__ (first,second): # *
  33. w=Fraction(first.numerator*second.numerator,first.denominator*second.denominator)
  34. w._reduce()
  35. return w
  36. def __sub__(first,second): # -
  37. w = Fraction(first.numerator*second.denominator-second.numerator*first.denominator, second.denominator* first.denominator)
  38. w._reduce()
  39. return w
  40. def __floordiv__ (first,second):# //
  41. second.numerator,second.denominator=second.denominator,second.numerator
  42. return first.__mul__(second)
  43. def _integerpart (self): # integer part of the fraction
  44. if self.numerator>self.denominator:
  45. w=self.numerator//self.denominator
  46. self.numerator=self.numerator-self.denominator*w
  47. q=Fraction(self.numerator,self.denominator)
  48. q._reduce()
  49. return str(w) + " " + str(q)
  50. else:integerpart(self)
  51. def _wow (self): #correct zero and ones output
  52. if self.denominator==1:
  53. return self.numerator
  54. elif self.numerator==0:
  55. return "0"
  56. f=Fraction(5,1)
  57. print(f._wow())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement