def substitution(self, nr, base): ''' the substitution method in: ->nr: number type ->base:an integer number out: the result (a number type) ''' res = Number("0", base) need = Number("", base) a1 = [] if need.stringToInt(nr.get_number()) < base: #if the number is smaller than the base then it is a digit for this base res.set_number( self.op.intToString(need.stringToInt(nr.get_number()))) else: a1 = need.digits(nr.get_number()) p = 0 need = Number("", 10) while a1 != []: copy = p strBase = self.op.intToString(nr.get_base()) power = '1' while copy != 0: power = self.op.mulNumbers(power, strBase, base).get_number() copy -= 1 digit = a1[-1] product = self.op.mulNumbers(power, digit, base) p += 1 res.set_number( self.op.addNumbers(res.get_number(), product.get_number(), base).get_number()) a1 = a1[:-1] return res
def testNumber(): nr=Number("100",2) assert nr.get_number()=="100" assert nr.get_base()==2 nr.set_number("12") assert nr.get_number()=="12" nr.set_base(10) assert nr.get_base()==10 nr2=Number("12",10) assert nr==nr2 array=nr.digits(nr.get_number()) assert array==["1","2"] char='A' assert nr.modifyChar(char)==10 assert nr.stringToInt(char)==10 char="1" assert nr.stringToInt(char)==1