编写一个函数,将一个 a 进制的数转换成一个 b 进制的数,其中 a 和 b 都 在[2, 16]之间。

该函数有3个参数,前两个参数分别是 a 和 b ,第三个参数是一个字符串,表示a进制的数。

如果 a 和 b 不在给定范围之内,返回None, 否则返回对应的 b 进制数。

def func59(a, b, s):
    if a == b:
        return s
    if 2 <= a <= 16 and 2 <= b <= 16:
         #----将给出的字符串数字转换成十进制数----
        if a != 10:
            str_num = str(s)
            str_num = str_num[::-1]
            temp = 0
            step_num = 0
            for i in str_num:
                if i == 'A':
                    i = '10'
                elif i == 'B':
                    i = '11'
                elif i == 'C':
                    i = '12'
                elif i == 'D':
                    i = '13'
                elif i == 'E':
                    i = '14'
                elif i == 'F':
                    i = '15'
                i = int(i)
                step_num += a ** temp * i
                temp += 1
            s = step_num
        #----转换成十进制数的整数类型转换成目标进制数,最终为字符串数字
        if b == b:
            list_1, list_2 = [], []
            while s > 0:
                list_1.append(s % b)
                s //= b
            for i in list_1:
                if i == 10:
                    list_2.append('A')
                elif i == 11:
                    list_2.append('B')
                elif i == 12:
                    list_2.append('C')
                elif i == 13:
                    list_2.append('D')
                elif i == 14:
                    list_2.append('E')
                elif i == 15:
                    list_2.append('F')
                else:
                    list_2.append(str(i))
            return ''.join(list_2[::-1])
    else:
        return None



if __name__ == "__main__":
    print(func59(5, 13, '431'))
    print(func59(2, 16, '11111'))

 

本文地址:https://blog.csdn.net/Using_head/article/details/110452041