def from_float(value): val = float(value) v = int(val) o = val - v if o > 0.0001: u = 1 / o return ULO(numbery.to_num(v) + '$ena') + ULO('ena$ena') / from_float(u) else: return ULO(numbery.to_num(v) + '$ena')
def __init__(self, value): if type(value) == int: v = value Variable.__init__(self, 'celo število', numbery.to_num(v)) self.real_value = v elif type(value) == float: v = int(value) Variable.__init__(self, 'celo število', numbery.to_num(v)) self.real_value = v elif type(value) == str: if ('1' in value or '2' in value or '3' in value or '4' in value or '5' in value or '6' in value or '7' in value or '8' in value or '9' in value): #je napisano z besedo Variable.__init__(self, 'celo število', numbery.to_num(value)) self.real_value = numbery.from_num(self.value) else: v = value Variable.__init__(self, 'celo število', v) self.real_value = numbery.from_num(v) elif value.tip == 'celo število': v = value.real_value Variable.__init__(self, 'celo število', value.value) self.real_value = v elif value.tip == 'flo': v = int(value.real_value) Variable.__init__(self, 'celo število', value.value) self.real_value = v elif value.tip == 'ulo': v = int(value) Variable.__init__(self, 'celo število', numbery.to_num(v)) self.real_value = v elif value.tip == 'str': tmp = INT(str(value)) Variable.__init__(self, 'celo število', tmp.value) self.real_value = tmp.real_value else: try: v = value.real_value except: v = int(value) Variable.__init__(self, 'celo število', value.value) self.real_value = v
def __init__(self, value): if type(value) == int: v = float(value) Variable.__init__(self, 'flo', numbery.to_num(v)) self.real_value = v elif type(value) == float: v = value Variable.__init__(self, 'flo', numbery.to_num(v)) self.real_value = v elif type(value) == str: if ('1' in value or '2' in value or '3' in value or '4' in value or '5' in value or '6' in value or '7' in value or '8' in value or '9' in value): #je napisano z besedo Variable.__init__(self, 'flo', numbery.to_num(value)) self.real_value = numbery.from_num(self.value) else: v = value Variable.__init__(self, 'flo', v) self.real_value = numbery.from_num(v) elif value.tip == 'int': v = float(value.real_value) Variable.__init__(self, 'flo', value.value) self.real_value = v elif value.tip == 'nar': v = float(value.real_value) Variable.__init__(self, 'flo', value.value) self.real_value = v elif type(value) == ULO: v = float(value) Variable.__init__(self, 'flo', numbery.to_num(v)) self.real_value = v elif type(value) == FLO: Variable.__init__(self, 'flo', value.value) self.real_value = value.real_value elif type(value) == STR: tmp = FLO(str(value)) Variable.__init__(self, 'flo', tmp.value) self.real_value = tmp.real_value
def __pow__(self, other): return ULO(numbery.to_num(self.real_up**other), numbery.to_num(self.real_down**other))
def inputint(sklad): sklad.append(to_num(input()))
def __mod__(self, other): return NAR(numbery.to_num(self.real_value % other.real_value))
def __truediv__(self, other): return NAR(numbery.to_num(self.real_value // other.real_value))
def __abs__(self): return NAR(numbery.to_num(abs(self.real_value)))
def __init__(self, value): if type(value) == int: v = value Variable.__init__(self, 'naravno število', numbery.to_num(v)) self.real_value = v if not v > 2: raise Exception('nar je lahko le naravno število večje od 2.') elif type(value) == float: v = int(value) Variable.__init__(self, 'naravno število', numbery.to_num(v)) self.real_value = v if not v > 2: raise Exception('nar je lahko le naravno število večje od 2.') elif type(value) == str: if ('1' in value or '2' in value or '3' in value or '4' in value or '5' in value or '6' in value or '7' in value or '8' in value or '9' in value): #je napisano z besedo Variable.__init__(self, 'naravno število', numbery.to_num(value)) self.real_value = numbery.from_num(self.value) if not self.real_value > 2: raise Exception( 'nar je lahko le naravno število večje od 2.') else: v = value Variable.__init__(self, 'naravno število', v) self.real_value = numbery.from_num(v) if not self.real_value > 2: raise Exception( 'nar je lahko le naravno število večje od 2.') elif value.tip == 'flo': v = int(value.real_value) Variable.__init__(self, 'naravno število', numbery.to_num(v)) self.real_value = v if not v > 2: raise Exception('nar je lahko le naravno število večje od 2.') elif value.tip == 'int': if value.real_value > 2: v = value.real_value Variable.__init__(self, 'naravno število', value.value) self.real_value = v else: raise Exception('nar je lahko le naravno število večje od 2.') elif value.tip == 'naravno število': v = value.real_value Variable.__init__(self, 'naravno število', value.value) self.real_value = v if not v > 2: raise Exception('nar je lahko le naravno število večje od 2.') elif value.tip == 'ulo': v = int(value) Variable.__init__(self, 'naravno število', numbery.to_num(v)) self.real_value = v if not v > 2: raise Exception('nar je lahko le naravno število večje od 2.') elif value.tip == 'str': tmp = NAR(str(value)) Variable.__init__(self, 'naravno število', tmp.value) self.real_value = tmp.real_value
def __sub__(self, other): tmp = gcd(int(self.real_down), int(other.real_down)) return ULO(numbery.to_num(self.real_up * tmp - other.real_up * tmp), lcm(self.real_down, other.real_down))
def __init__(self, value, *v): Variable.__init__(self, 'ulo', (1, 1)) if len(v) == 1: self.value = (value, v) self.real_up = numbery.from_num(value) self.real_down = numbery.from_num(v[0]) elif type(value) == str: if '$' in value: up, down = value.split('$') self.value = (up, down) try: self.real_up = numbery.from_num(up) self.real_down = numbery.from_num(down) tmp = gcd(int(self.real_down), int(self.real_up)) self.real_up /= tmp self.real_down /= tmp self.value = (numbery.to_num(self.real_up), numbery.to_num(self.real_down)) except Exception as error: print(error) raise Exception('Napaka pri zapisu števila.') else: up, down = from_float(float(value)).value self.value = (up, down) elif type(value) == float: self.value = from_float(value).value up, down = self.value self.real_up, self.real_down = numbery.from_num( up), numbery.from_num(down) elif type(value) == int: self.value = from_float(float(value)).value up, down = self.value self.real_up, self.real_down = numbery.from_num( up), numbery.from_num(down) elif value.tip == 'str': tmp = ULO(str(value)) self.real_up = tmp.real_up self.real_down = tmp.real_down self.value = (numbery.to_num(self.real_up), numbery.to_num(self.real_down)) elif value.tip == 'celo število': tmp = ULO(int(value)) self.real_up = tmp.real_up self.real_down = tmp.real_down self.value = (numbery.to_num(self.real_up), numbery.to_num(self.real_down)) elif value.tip == 'naravno število': tmp = ULO(int(value)) self.real_up = tmp.real_up self.real_down = tmp.real_down self.value = (numbery.to_num(self.real_up), numbery.to_num(self.real_down)) elif value.tip == 'ulo': self = value.copy() self.real_up = int(self.real_up) self.real_down = int(self.real_down) if type(self.value[1]) == tuple: print(type(value)) print(self.value, self.real_up, self.real_down)
def __abs__(self): return ULO(numbery.to_num(abs(self.real_up)), self.real_down)
def __pos__(self): return ULO(numbery.to_num(+numbery.from_num(self.real_up)), self.real_down)
def __neg__(self): return ULO(numbery.to_num(-numbery.from_num(self.real_up)), self.real_down)
def __neg__(self): return NAR(numbery.to_num(-numbery.from_num(self.value)))
def __pos__(self): return NAR(numbery.to_num(+numbery.from_num(self.value)))
def __mul__(self, other): return ULO(numbery.to_num(self.real_up * other.real_up), numbery.to_num(self.real_down * other.real_down))
def __invert__(self): return NAR(numbery.to_num(~numbery.from_num(self.value)))
def __add__(self, other): return INT(numbery.to_num(self.real_value + other.real_value))
def __sub__(self, other): return NAR(numbery.to_num(self.real_value - other.real_value))
def __mul__(self, other): return INT(numbery.to_num(self.real_value * other.real_value))
def __floordiv__(self, other): return NAR(numbery.to_num(round(self.real_value / other.real_value)))
def __truediv__(self, other): return INT(numbery.to_num(round(self.real_value / other.real_value)))
def __pow__(self, other): return NAR(numbery.to_num(self.real_value**other.real_value))
def __floordiv__(self, other): return INT(numbery.to_num(self.real_value // other.real_value))
def inputulo(sklad): sklad.append('$'.join([to_num(x) for x in input().split('/')]))
def __truediv__(self, other): return ULO(numbery.to_num(self.real_up * other.real_down), numbery.to_num(self.real_down * other.real_up))