Exemple #1
0
 def decrTwoNr(self, nr1, nr2):
     '''
     decreases two numbers in one of number's base as the user like
     in:    ->nr1,nr2 :number type
     out: the sum : a number type
     '''
     need = Number("", 10)
     print("The base can be " +
           self.__controller.nrIntToString(nr1.get_base()) + " or " +
           self.__controller.nrIntToString(nr2.get_base()) + "!")
     base = input("Give the base,on which the operations will be done:\n")
     try:
         self.__nrValid.validateBaseInput(need.stringToInt(base), nr1, nr2)
         base = int(base)
         if base == nr1.get_base():
             nr2.set_number(
                 self.__controller.convertNr(nr2,
                                             nr1.get_base()).get_number())
             nr2.set_base(base)
         elif base == nr2.get_base():
             nr1.set_number(
                 self.__controller.convertNr(nr1,
                                             nr2.get_base()).get_number())
             nr1.set_base(base)
         self.__nrValid.decreasesValidation(nr1.get_number(),
                                            nr2.get_number())
         return self.__controller.decreaseNumbers(nr1, nr2, base)
     except commandValidationExceptions as ex:
         print(ex)
Exemple #2
0
def testOperations():
    op = operations()
    digit = 12
    base = 11
    d, t = op.verifDigit(digit, base)
    assert d == 1 and t == 1

    nr = 13
    assert op.intToString(nr) == 'D'
    nr1 = "47"
    nr2 = "55"
    res = Number("124", 8)
    assert op.addNumbers(nr1, nr2, 8) == res

    nr1 = "100"
    nr2 = "1"
    res = Number("11", 2)
    assert op.decreaseNumbers(nr1, nr2, 2) == res

    nr1 = "B2"
    nr2 = "B"
    res = Number("7A6", 16)
    assert op.mulNumbers(nr1, nr2, 16) == res

    nr1 = "873"
    digit = "5"
    res = Number("167", 9)
    r = "4"
    result, rest = op.divD(nr1, digit, 9)
    assert result == res and r == rest
 def validateNr(self, nr, base, errors):
     '''
     validate a number and its digits
     '''
     op = operations()
     need = Number("", 10)
     a = need.digits(nr)
     base = int(base)
     for i in range(len(a)):
         self.validateDigitB(a[i], op.intToString(base))
     if len(errors):
         raise validationExceptions(errors)
 def addNumbers(self, nr1, nr2, base):
     '''
     add two numbers with a given base
     in:   ->nr1:a string number
           ->nr2:a string number
           ->base a int number
     out:a number type
     '''
     need = Number("", 10)
     a1 = need.digits(nr1)
     a2 = need.digits(nr2)
     t = 0
     res = ""
     while a1 != [] and a2 != []:
         s = need.stringToInt(a1[-1]) + need.stringToInt(a2[-1]) + t
         s, t = self.verifDigit(s, base)
         res += self.intToString(s)
         a1 = a1[:-1]
         a2 = a2[:-1]
     while a1 != []:
         s = need.stringToInt(a1[-1]) + t
         s, t = self.verifDigit(s, base)
         res += self.intToString(s)
         a1 = a1[:-1]
     while a2 != []:
         s = need.stringToInt(a2[-1]) + t
         s, t = self.verifDigit(s, base)
         res += self.intToString(s)
         a2 = a2[:-1]
     if t != 0:
         res += self.intToString(t)
     res = Number(res[::-1], base)
     return res
    def validateDigitB(self, digit, base):
        '''
        validates a digit to be the digit of a specified base
        digit,base string numbers
        '''
        errors = []
        need = Number("", 10)
        if need.stringToInt(digit) > need.stringToInt(base):
            errors.append(
                "Invalid number!The digits must be between 0 and base-1!\n")
        if digit < '0':
            errors.append("The digit can't be negative!\n")

        if len(errors):
            raise validationExceptions(errors)
 def validateDigit(self, digit):
     '''
     validates a digit without taking into account the base
     '''
     errors = []
     need = Number("", 10)
     if need.stringToInt(digit) > 16:
         errors.append("Invalid digit!The digit must be smaller than 10!\n")
     if digit < '0':
         errors.append("The digits of number can't be negative!\n")
     if not ((ord(digit) <= 57 and ord(digit) >= 48) or
             (ord(digit) <= 70 and ord(digit) >= 65) or
             (ord(digit) <= 102 and ord(digit) >= 97)):
         errors.append("Invalid digit!")
     if len(errors):
         raise validationExceptions(errors)
 def decreaseNumbers(self, nr1, nr2, base):
     '''
     decreases two numbers in a given base
     in:    ->nr1:string number
            ->nr2:string number
            ->base:int number
     '''
     need = Number("", 10)
     a1 = need.digits(nr1)
     a2 = need.digits(nr2)
     t = 0
     res = ""
     while a1 != [] and a2 != []:
         dif = need.stringToInt(a1[-1]) - need.stringToInt(a2[-1]) - t
         dif, t = self.verifDigit(dif, base)
         res += self.intToString(dif)
         a1 = a1[:-1]
         a2 = a2[:-1]
     while a1 != []:
         dif = need.stringToInt(a1[-1]) - t
         dif, t = self.verifDigit(dif, base)
         res += self.intToString(dif)
         a1 = a1[:-1]
     while len(res) != 1 and res[-1] == '0':
         res = res[:-1]
     res = Number(res[::-1], base)
     return res
    def divD(self, nr, digit, base):
        '''
        multiply a number with a digit in a given base
        in:    ->nr:string number
               ->digit:a char
               ->base:int number
        out:the result (a number type) and the rest a char
        '''
        need = Number("", 10)
        res = ""
        a = need.digits(nr)
        a = a[::-1]
        d = need.stringToInt(digit)
        q = need.stringToInt(a[-1]) // d
        r = need.stringToInt(a[-1]) % d
        res += self.intToString(q)
        a = a[:-1]
        while a != []:
            r = r * base
            r += need.stringToInt(a[-1])
            q = r // d
            res += self.intToString(q)
            r = r % d
            a = a[:-1]
        res = res[::-1]

        while len(res) != 0 and res[-1] == '0':
            res = res[:-1]
        res = Number(res[::-1], base)
        return res, self.intToString(r)
def testFastConversions():
    c = conversions()
    nr = Number("10010111", 2)
    assert c.fast(nr, 16).get_number() == '97'
    assert c.fast(nr, 16).get_base() == 16

    nr = Number("10010111", 2)
    assert c.fast(nr, 4).get_number() == '2113'
    assert c.fast(nr, 4).get_base() == 4

    nr = Number("10010111", 2)
    assert c.fast(nr, 8).get_number() == '227'
    assert c.fast(nr, 8).get_base() == 8

    nr = Number("1123", 4)
    assert c.fast(nr, 16).get_number() == '5B'
    assert c.fast(nr, 16).get_base() == 16

    nr = Number("1123", 4)
    assert c.fast(nr, 2).get_number() == '01011011'
    assert c.fast(nr, 2).get_base() == 2

    nr = Number("1123", 16)
    assert c.fast(nr, 2).get_number() == '0001000100100011'
    assert c.fast(nr, 2).get_base() == 2

    nr = Number("AB", 16)
    assert c.fast(nr, 4).get_number() == '2223'
    assert c.fast(nr, 4).get_base() == 4
Exemple #10
0
 def divideDDiff(self, nr, digit, base):
     '''
     divide a number with a digit in a given base
     in: ->number :number type
         ->digit:a char
         ->base:int number
     out: a number type
     '''
     digit = Number(digit, 16)
     digit = self.__controller.convertNr(digit, base).get_number()
     return self.__controller.divideNumber(nr, digit, base)
 def succesiveDiv(self, nr, base):
     '''
     the succesive division method
     in:    ->nr: number type
            ->base:an integer number
     out: the result (a number type)
     '''
     res = ""
     while nr.get_number() != "":
         q, r = self.op.divD(nr.get_number(), self.op.nrIntToString(base),
                             nr.get_base())
         nr.set_number(q.get_number())
         res += r
     res = Number(res[::-1], base)
     return res
 def mulNumbers(self, nr, digit, base):
     '''
     multiply a number with a digit in a given base
     in:    ->nr:string number
            ->digit:a char
            ->base:int number
     out: a number type
     '''
     need = Number("", 10)
     d = need.stringToInt(digit)
     a = need.digits(nr)
     t = 0
     res = ""
     while a != []:
         product = need.stringToInt(a[-1]) * d + t
         product, t = self.verifDigit(product, base)
         res += self.intToString(product)
         a = a[:-1]
     if t != 0:
         res += self.intToString(t)
     res = Number(res[::-1], base)
     return res
def testConversions():
    c = conversions()
    nr = Number("6F", 16)
    res = Number("111", 10)
    assert c.substitution(nr, 10) == res

    nr = Number("111", 10)
    res = Number("6F", 16)
    assert c.succesiveDiv(nr, 16) == res

    nr = Number("179", 10)
    res = Number("263", 8)
    assert c.succesiveDiv(nr, 8) == res

    nr = Number("263", 8)
    res = Number("179", 10)
    assert c.substitution(nr, 10) == res

    nr = Number("263", 8)
    res = Number("179", 10)
    assert c.succesiveDiv(nr, 10) == res

    nr = Number("AB", 13)
    res = Number("8D", 16)
    assert c.succesiveDiv(nr, 16) == res
    def fast(self, nr, base):
        '''
        convert a number from 2,4,8 in 16 or reverse
        in:    ->nr (number type)
               ->base (integer type)
        out: the converted number (number type)
        '''
        switcher={'0':'0000','1':'0001','2':'0010','3':'0011','4':'0100','5':'0101',\
                  '6':'0110','7':'0111','8':'1000','9':'1001','A':'1010','B':'1011',\
                  'C':'1100','D':'1101','E':'1110','F':'1111'}
        switcher4={'0':'00','1':'01','2':'02','3':'03','4':'10','5':'11',\
                  '6':'12','7':'13','8':'20','9':'21','A':'22','B':'23',\
                  'C':'30','D':'31','E':'32','F':'33'}

        need = Number("", 10)
        a = need.digits(nr.get_number())
        res = ""

        if nr.get_base() == 2 or nr.get_base() == 4:
            p = self.power(base, nr.get_base())
            part = 4 - p
            a = a[::-1]
            if part != 0:
                while (len(a) % p) != 0:
                    a += '0'
            a = a[::-1]
            while a != []:
                whole = ""
                copy = p
                if nr.get_base() == 4 and base == 2:
                    copy //= 2
                while copy != 0:
                    whole += a[-1]
                    copy -= 1
                    a = a[:-1]
                whole = whole[::-1]
                if nr.get_base() == 2:
                    for i in switcher.keys():
                        if whole == switcher[i][part:4]:
                            res += i
                            break
                else:
                    for i in switcher4.keys():
                        if whole == switcher4[i][0:part]:
                            res += i
                            break

            res = res[::-1]
        else:
            p = self.power(nr.get_base(), base)
            part = 4 - p
            if (nr.get_base() == 4 or nr.get_base() == 8
                    or nr.get_base() == 16) and (base == 2 or base == 4):
                a = a[::-1]
                while a != []:
                    whole = a[-1]
                    if base == 2:
                        for i in switcher.keys():
                            if whole == i:
                                res += switcher[i][part:4]
                                break
                    else:
                        for i in switcher4.keys():
                            if whole == i:
                                res += switcher4[i][0:part]
                                break
                    a = a[:-1]
        while res != "" and res[0] == '0':
            res = res[1:]
        res = Number(res, base)
        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
Exemple #16
0
    def run(self):
        """
        Run the console gui
        """
        # print initial help menu
        print(self._get_help_menu())

        while True:
            option = self._get_command()

            try:
                if option == "q":  # quit the loop
                    break

                elif option == "h":  # display help
                    print(self._get_help_menu())

                elif option == "1":  # add two numbers
                    print("Addition")
                    base = self._get_int_command("Base of the numbers: ")

                    number_a = Number(self._get_command("Number a: "), base)
                    number_b = Number(self._get_command("Number b: "), base)

                    print("Result: {0} (base {1})".format(number_a + number_b, base))

                elif option == "2":
                    print("Subtraction")
                    base = self._get_int_command("Base of the numbers: ")

                    number_a = Number(self._get_command("Number a(must be larger than b): "), base)
                    number_b = Number(self._get_command("Number b: "), base)

                    print("Result: {0} (base {1})".format(number_a - number_b, base))

                elif option == "3":
                    print("Multiplication")
                    base = self._get_int_command("Base of the number: ")

                    number = Number(self._get_command("Number: "), base)
                    scalar = self._get_int_command("Scalar: ")

                    print("Result: {0} (base {1})".format(number * scalar, base))

                elif option == "4":
                    print("Division")
                    base = self._get_int_command("Base of the number: ")

                    number = Number(self._get_command("Number: "), base)
                    scalar = self._get_int_command("Scalar: ")
                    quotient, remainder = divmod(number, scalar)

                    print("Quotient = {0} (base {1}), \n Remainder = {2}".format(quotient, base, remainder))

                elif option == "5" or option == "6" or option == "7":
                    if option == "5":
                        print("Conversion using substitution")
                    if option == "6":
                        print("Conversion using multiplication and division method")
                    if option == "7":
                        print("Using rapid conversions")

                    source_base = self._get_int_command("Base of the number: ")
                    number = Number(self._get_command("Number: "), source_base)
                    destination_base = self._get_int_command("Destination base: ")

                    if option == "5":
                        number.convert_substitution(destination_base)
                    if option == "6":
                        number.convert_division(destination_base)
                    if option == "7":
                        number.convert_rapid(destination_base)

                    print("Result: {0} (base {1})".format(number, destination_base))

                else:
                    print("Option does not exist. Please try again")

            except NumberException as ex:
                print(ex)
    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
Exemple #18
0
    def show(self):

        while True:
            print(
                "                                      ~ Monica Olanescu 's application ~"
            )
            print("====Main menu====")
            print("1.Operations")
            print("2.Conversions")
            print("0.Exit\n")
            cmd = input("Give the command:")
            try:
                self.__commValid.validateCommand(cmd, 2)
                cmd = int(cmd)
                if cmd == 0:
                    break
                elif cmd == 1:
                    while True:
                        print("--Operations menu--")
                        print("1.Add")
                        print("2.Decrease")
                        print("3.Multiply with a digit")
                        print("4.Division by a digit")
                        print("0.Back\n")
                        cmd = input("Give the command:")
                        try:
                            self.__commValid.validateCommand(cmd, 4)
                            cmd = int(cmd)
                            if cmd == 0:
                                break
                            elif cmd == 1:
                                print("--Add menu--")
                                print(
                                    "1.Add two numbers in one of number's base"
                                )
                                print("2.Add two numbers in a different base")
                                print("0.Back\n")
                                cmd = input("Give the command:")
                                try:
                                    self.__commValid.validateCommand(cmd, 2)
                                    cmd = int(cmd)
                                    if cmd == 0:
                                        break
                                    elif cmd == 1:
                                        try:
                                            nr = input(
                                                "Give the first number:")
                                            base = input("Give its base:")
                                            nr1 = Number(nr, base)
                                            self.__nrValid.validateNumber(nr1)
                                            nr1.set_base(int(base))
                                            try:
                                                nr = input(
                                                    "Give the another number:")
                                                base = input("Give its base:")
                                                nr2 = Number(nr, base)
                                                self.__nrValid.validateNumber(
                                                    nr2)
                                                nr2.set_base(int(base))
                                                print("The sum is :" +
                                                      self.addTwoNr(nr1, nr2).
                                                      get_number())
                                            except validationExceptions as ex:
                                                print(ex)
                                        except validationExceptions as ex:
                                            print(ex)

                                    elif cmd == 2:
                                        try:
                                            nr = input(
                                                "Give the first number:")
                                            base = input("Give its base:")
                                            nr1 = Number(nr, base)
                                            self.__nrValid.validateNumber(nr1)
                                            nr1.set_base(int(base))
                                            try:
                                                nr = input(
                                                    "Give the second number:")
                                                base = input("Give its base:")
                                                nr2 = Number(nr, base)
                                                self.__nrValid.validateNumber(
                                                    nr2)
                                                nr2.set_base(int(base))
                                                base = input(
                                                    "Give the base on which the operations will be done:"
                                                )
                                                try:
                                                    self.__nrValid.validateBase(
                                                        base)
                                                    base = int(base)
                                                    print("The sum is " + self.
                                                          addTwoNumberDifBase(
                                                              nr1, nr2, base
                                                          ).get_number())
                                                except validationExceptions as ex:
                                                    print(ex)
                                            except validationExceptions as ex:
                                                print(ex)
                                        except validationExceptions as ex:
                                            print(ex)
                                except commandValidationExceptions as ex:
                                    print(ex)

                            elif cmd == 2:
                                while True:
                                    print("--Decrease menu--")
                                    print(
                                        "1.Decrease two numbers in one of number's base"
                                    )
                                    print(
                                        "2.Decrease two numbers in a different base"
                                    )
                                    print("0.Back\n")
                                    cmd = input("Give the command:")
                                    try:
                                        self.__commValid.validateCommand(
                                            cmd, 2)
                                        cmd = int(cmd)
                                        if cmd == 0:
                                            break
                                        elif cmd == 1:
                                            try:
                                                nr = input(
                                                    "Give the first number:")
                                                base = input("Give its base:")
                                                nr1 = Number(nr, base)
                                                self.__nrValid.validateNumber(
                                                    nr1)
                                                nr1.set_base(int(base))
                                                try:
                                                    nr = input(
                                                        "Give the another number:"
                                                    )
                                                    base = input(
                                                        "Give its base:")
                                                    nr2 = Number(nr, base)
                                                    self.__nrValid.validateNumber(
                                                        nr2)
                                                    nr2.set_base(int(base))
                                                    try:
                                                        print(
                                                            "The difference is :"
                                                            + self.decrTwoNr(
                                                                nr1, nr2
                                                            ).get_number())
                                                    except validationExceptions as ex:
                                                        print(ex)
                                                except validationExceptions as ex:
                                                    print(ex)
                                            except validationExceptions as ex:
                                                print(ex)
                                        elif cmd == 2:
                                            try:
                                                nr = input(
                                                    "Give the first number:")
                                                base = input("Give its base:")
                                                nr1 = Number(nr, base)
                                                self.__nrValid.validateNumber(
                                                    nr1)
                                                nr1.set_base(int(base))
                                                try:
                                                    nr = input(
                                                        "Give the second number:"
                                                    )
                                                    base = input(
                                                        "Give its base:")
                                                    nr2 = Number(nr, base)
                                                    self.__nrValid.validateNumber(
                                                        nr2)
                                                    nr2.set_base(int(base))
                                                    base = input(
                                                        "Give the base on which the operations will be done:"
                                                    )
                                                    try:
                                                        self.__nrValid.validateBase(
                                                            base)
                                                        base = int(base)
                                                        try:
                                                            self.__nrValid.decreasesValidation(
                                                                nr1.get_number(
                                                                ),
                                                                nr2.get_number(
                                                                ))
                                                            print(
                                                                "The difference is :"
                                                                + self.
                                                                decrTwoNumberDifBase(
                                                                    nr1, nr2,
                                                                    base
                                                                ).get_number())
                                                        except validationExceptions as ex:
                                                            print(ex)
                                                    except validationExceptions as ex:
                                                        print(ex)
                                                except validationExceptions as ex:
                                                    print(ex)
                                            except validationExceptions as ex:
                                                print(ex)
                                    except commandValidationExceptions as ex:
                                        print(ex)
                            elif cmd == 3:
                                while True:
                                    print("--Multiply menu--")
                                    print(
                                        "1.Multiply a number with a digit in the number's base"
                                    )
                                    print(
                                        "2.Multiply a number with a digit in a different base"
                                    )
                                    print("0.Back\n")
                                    cmd = input("Give the command:")
                                    try:
                                        self.__commValid.validateCommand(
                                            cmd, 2)
                                        cmd = int(cmd)
                                        if cmd == 0:
                                            break
                                        elif cmd == 1:
                                            try:
                                                nr = input("Give the number:")
                                                base = input("Give its base:")
                                                nr = Number(nr, base)
                                                self.__nrValid.validateNumber(
                                                    nr)
                                                nr.set_base(int(base))
                                                try:
                                                    digit = input(
                                                        "Give the digit:")
                                                    self.__nrValid.validateDigitB(
                                                        digit, base)
                                                    print("The product is :" +
                                                          self.multiplyD(
                                                              nr, digit
                                                          ).get_number())
                                                except validationExceptions as ex:
                                                    print(ex)

                                            except validationExceptions as ex:
                                                print(ex)
                                        elif cmd == 2:
                                            try:
                                                nr = input("Give the number:")
                                                base = input("Give its base:")
                                                nr = Number(nr, base)
                                                self.__nrValid.validateNumber(
                                                    nr)
                                                nr.set_base(int(base))
                                                try:
                                                    digit = input(
                                                        "Give the digit:")
                                                    self.__nrValid.validateDigit(
                                                        digit)
                                                    base = input(
                                                        "Give the base on which the operations will be done:"
                                                    )
                                                    try:
                                                        self.__nrValid.validateBase(
                                                            base)
                                                        base = int(base)
                                                        print(
                                                            "The product is :"
                                                            +
                                                            self.multiplyDiff(
                                                                nr, digit, base
                                                            ).get_number())
                                                    except validationExceptions as ex:
                                                        print(ex)

                                                except validationExceptions as ex:
                                                    print(ex)

                                            except validationExceptions as ex:
                                                print(ex)
                                    except commandValidationExceptions as ex:
                                        print(ex)

                            elif cmd == 4:
                                while True:
                                    print("--Division menu--")
                                    print(
                                        "1.Divide a number with a digit in the number's base"
                                    )
                                    print(
                                        "2.Divide a number with a digit in a different base"
                                    )
                                    print("0.Back\n")
                                    cmd = input("Give the command:")
                                    try:
                                        self.__commValid.validateCommand(
                                            cmd, 2)
                                        cmd = int(cmd)
                                        if cmd == 0:
                                            break
                                        elif cmd == 1:
                                            try:
                                                nr = input("Give the number:")
                                                base = input("Give its base:")
                                                nr = Number(nr, base)
                                                self.__nrValid.validateNumber(
                                                    nr)
                                                nr.set_base(int(base))
                                                try:
                                                    digit = input(
                                                        "Give the digit:")
                                                    self.__nrValid.validateDigitB(
                                                        digit, base)
                                                    q, r = self.divideD(
                                                        nr, digit)
                                                    print(
                                                        "The quotient is :" +
                                                        q.get_number() +
                                                        " and the remainder:" +
                                                        r + ".\n")
                                                except validationExceptions as ex:
                                                    print(ex)

                                            except validationExceptions as ex:
                                                print(ex)
                                        elif cmd == 2:
                                            try:
                                                nr = input("Give the number:")
                                                base = input("Give its base:")
                                                nr = Number(nr, base)
                                                self.__nrValid.validateNumber(
                                                    nr)
                                                nr.set_base(int(base))
                                                try:
                                                    digit = input(
                                                        "Give the digit:")
                                                    self.__nrValid.validateDigit(
                                                        digit)
                                                    base = input(
                                                        "Give the base on which the operations will be done:"
                                                    )
                                                    try:
                                                        self.__nrValid.validateBase(
                                                            base)
                                                        base = int(base)
                                                        q, r = self.divideDDiff(
                                                            nr, digit, base)
                                                        print(
                                                            "The quotient is :"
                                                            + q.get_number() +
                                                            " and the remainder:"
                                                            + r + ".\n")
                                                    except validationExceptions as ex:
                                                        print(ex)

                                                except validationExceptions as ex:
                                                    print(ex)

                                            except validationExceptions as ex:
                                                print(ex)
                                    except commandValidationExceptions as ex:
                                        print(ex)
                        except commandValidationExceptions as ex:
                            print(ex)

                elif cmd == 2:
                    while True:
                        print("--Conversions menu--")
                        print("1.Successive division method")
                        print("2.Substitution method")
                        print("3.Fast conversions between 2,4,16 base")
                        print("4.Conversions with an intermediary base")
                        print("0.Back\n")
                        cmd = input("Give the command:")
                        try:
                            self.__commValid.validateCommand(cmd, 4)
                            cmd = int(cmd)
                            if cmd == 0:
                                break
                            elif cmd == 1:
                                print(
                                    "Successive division method works better when the number's base is bigger than the base on which we want to convert!"
                                )
                                try:
                                    nr = input("Give the number:")
                                    base = input("Give its base:")
                                    nr = Number(nr, base)
                                    self.__nrValid.validateNumber(nr)
                                    nr.set_base(int(base))
                                    try:
                                        base = input(
                                            "Give the base in which the number will be converted:"
                                        )
                                        self.__nrValid.validateBase(base)
                                        base = int(base)
                                        self.__methValid.validateDivision(
                                            nr, base)
                                        print("The converted number is " +
                                              self.convertDiv(
                                                  nr, base).get_number() +
                                              "!\n")
                                    except methodExceptions as ex:
                                        print(ex)
                                    except validationExceptions as ex:
                                        print(ex)

                                except validationExceptions as ex:
                                    print(ex)

                            elif cmd == 2:
                                print(
                                    "Substitution method works better when the number's base is bigger than the base on which we want to convert!"
                                )
                                try:
                                    nr = input("Give the number:")
                                    base = input("Give its base:")
                                    nr = Number(nr, base)
                                    self.__nrValid.validateNumber(nr)
                                    nr.set_base(int(base))
                                    try:
                                        base = input(
                                            "Give the base in which the number will be converted:"
                                        )
                                        self.__nrValid.validateBase(base)
                                        base = int(base)
                                        self.__methValid.validateSubstition(
                                            nr, base)
                                        print("The converted number is " +
                                              self.convertSubstitution(
                                                  nr, base).get_number() +
                                              "!\n")
                                    except validationExceptions as ex:
                                        print(ex)
                                    except methodExceptions as ex:
                                        print(ex)
                                except validationExceptions as ex:
                                    print(ex)

                            elif cmd == 3:
                                print(
                                    "Fast conversions works only between 2,4,8 and 16 base!"
                                )
                                print(
                                    "Take care to have every time a base as a power to the other one!\n Ex: 4=2^2 ; 8=2^3 ;16=4^2 \n "
                                )
                                nr = input("Give the number:")
                                base = input("Give the base:")
                                nr = Number(nr, base)
                                try:
                                    self.__nrValid.validateNumber(nr)
                                    base = int(base)
                                    nr.set_base(base)
                                    try:
                                        base = input(
                                            "Give the base in which the number will be converted:"
                                        )
                                        self.__nrValid.validateBase(base)
                                        base = int(base)
                                        self.__methValid.validateBasesFast(
                                            base, nr.get_base())
                                        self.__methValid.validateFast(base)
                                        print("The converted number is " +
                                              self.fastConversions(
                                                  nr, base).get_number() +
                                              "!\n")
                                    except validationExceptions as ex:
                                        print(ex)
                                except validationExceptions as ex:
                                    print(ex)
                                except methodExceptions as ex:
                                    print(ex)
                            elif cmd == 4:
                                nr = input("Give the number:")
                                base = input("Give its base:")
                                nr = Number(nr, base)
                                try:
                                    self.__nrValid.validateNumber(nr)
                                    base = int(base)
                                    nr.set_base(base)
                                    try:
                                        intermediary = input(
                                            "Give the intermediary base:")
                                        self.__nrValid.validateBase(
                                            intermediary)
                                        intermediary = int(intermediary)
                                        base = input(
                                            "Give the base in which the number will be converted:"
                                        )
                                        self.__nrValid.validateBase(base)
                                        base = int(base)
                                        intermediaryNumber, finalNumber = self.conversionsIntermediaryBase(
                                            nr, intermediary, base)
                                        print(
                                            "The converted number in intermediary base is: "
                                            + intermediaryNumber.get_number() +
                                            "!")
                                        print("The converted number is " +
                                              finalNumber.get_number() + "!\n")
                                    except validationExceptions as ex:
                                        print(ex)
                                except validationExceptions as ex:
                                    print(ex)
                                except methodExceptions as ex:
                                    print(ex)
                        except commandValidationExceptions as ex:
                            print(ex)
            except commandValidationExceptions as ex:
                print(ex)