Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from functools import total_ordering
- @total_ordering
- class Fraction:
- def __init__(self,numerator,denominator):
- numerator/denominator
- self.numerator = numerator
- self.denominator = denominator
- def _reduce(self): #сокращение
- a = self.numerator
- b = self.denominator
- while b!=0:
- a,b=b,a%b
- self.numerator//=a
- self.denominator//=a
- return self
- def __str__(self):
- self._reduce
- return str(self.numerator)+"/"+str(self.denominator)
- def __add__ (first, second): # +
- return Fraction(first.numerator*first.denominator+second.numerator*second.denominator, second.denominator* first.denominator)
- def __float__(self):
- return self.numerator/self.denominator
- def __eq__ (first,second): # ==
- first._reduce()
- second._reduce()
- return first.numerator==second.numerator and first.denominator== second.denominator
- def __lt__ (right,left): # <
- first._reduce()
- second._reduce()
- return first.numerator*second.denominator-first.denominator*second.numerator
- def __mul__ (first,second): # *
- w=Fraction(first.numerator*second.numerator,first.denominator*second.denominator)
- w._reduce()
- return w
- def __sub__(first,second): # -
- w = Fraction(first.numerator*second.denominator-second.numerator*first.denominator, second.denominator* first.denominator)
- w._reduce()
- return w
- def __floordiv__ (first,second):# //
- second.numerator,second.denominator=second.denominator,second.numerator
- return first.__mul__(second)
- def _integerpart (self): # integer part of the fraction
- if self.numerator>self.denominator:
- w=self.numerator//self.denominator
- self.numerator=self.numerator-self.denominator*w
- q=Fraction(self.numerator,self.denominator)
- q._reduce()
- return str(w) + " " + str(q)
- else:integerpart(self)
- def _wow (self): #correct zero and ones output
- if self.denominator==1:
- return self.numerator
- elif self.numerator==0:
- return "0"
- f=Fraction(5,1)
- print(f._wow())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement