掉進懸崖的小白實現:任意36進制以內數轉換任意進制。初學方法有限,大佬多指點。

"""
# author Liu shi hao
# date: 2019/11/21 14:19
# file_name: switch_num_to_num

"""
def in_int_n():
    while True:
        num = input("請輸入要轉換的n進制n(暫支持36進制):")
        if num.isdigit() and 2<=int(num)<37:
            return int(num)
        print("重新輸入!")

# n進制轉10進制
def switch():
    x = in_int_n()
    str1 = input("輸入符合n進制的規範數:")
    sum = 0
    for i in range(len(str1) - 1, -1, -1):
        if str1[i].isdigit():
            sum += int(str1[i]) * x ** int(len(str1) - i - 1)
        else:
            sum += (ord(str1[i]) - 55) * x ** int(len(str1) - i - 1)
    return sum


print(switch())

# 10進制轉n進制


def in_int_m():
    while True:
        num = input("請輸入要轉換整數m:")
        if num.isdigit():
            return int(num)
        print("重新輸入!")


def conversion_base():
    m = in_int_m()
    n = in_int_n()
    str1 = ""
    while m != 0:
        if m % n >n:
            str1 =  str(chr(m % n+55))  + str1
        # str1 = "|"+str(m % n) +"|"+ str1  # 取餘數,按位數累加到字符串
        else:
            if m % n > 9:
                str1 = str(chr(m % n + 55)) + str1
            else:
                str1 = str(m % n)  + str1
        m = m // n  # 取商做下一次的除數
    return str1


print(conversion_base())

說明
此功能函數並不完善,需要自我約束使用,請大佬們多加指點修正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章