Python decimal conversion to other bases (positive numbers, including decimals), no function version

 Enter a decimal number and convert it to any base number.

import math

print("请按要求输入,只能输入正数,退出请按“N“")
num = input("请输入需要转换的十进制数:")
if num == "N":
    exit(0)
R = input("将十进制转化为:")
while num != 'N' and R != 'N':
    num = float(num)   # 先将num的str型转化为浮点型
    R = int(R)         # 将R转化为整数型
    num_zheng = math.floor(num)  # 截尾法去掉小数部分
    num_zheng = int(num_zheng)   # 把整数部分转化为整数型,浮点型会多个0和小数点
    num_xiao = num - num_zheng
    m = []
    n = []
    if num_zheng == 0:   # 判断整数是否为0,若为0,给列表m加个0
        m.append(0)
    if R < 10:
        while num_zheng > 0:
            m.append(num_zheng % R)
            num_zheng = num_zheng // R
        while num_xiao != 0:
            n.append(math.floor(num_xiao * R))
            num_xiao = (num_xiao * R) - math.floor(num_xiao * R)
    else:
        while num_zheng > 0:
            if num_zheng % R == 10:
                m.append("A")
            elif num_zheng % R == 11:
                m.append("B")
            elif num_zheng % R == 12:
                m.append("C")
            elif num_zheng % R == 13:
                m.append("D")
            elif num_zheng % R == 14:
                m.append("E")
            elif num_zheng % R == 15:
                m.append("F")
            else:
                m.append(num_zheng % R)
            num_zheng = num_zheng // R
        while num_xiao != 0:
            if math.floor(num_xiao * R) == 10:
                n.append("A")
            elif math.floor(num_xiao * R) == 11:
                n.append("B")
            elif math.floor(num_xiao * R) == 12:
                n.append("C")
            elif math.floor(num_xiao * R) == 13:
                n.append("D")
            elif math.floor(num_xiao * R) == 14:
                n.append("E")
            elif math.floor(num_xiao * R) == 15:
                n.append("F")
            else:
                n.append(math.floor(num_xiao * R))
            num_xiao = (num_xiao * R) - math.floor(num_xiao * R)
    a = ''.join([str(x) for x in m[::-1]])  # 把m列表的元素从后往前依次取出
    b = ''.join([str(x) for x in n[::1]])   # 把n列表的元素从前往后依次取出
    if n:  # 判断n是否为空,目的为了看是否需要添加小数点,如果n不为空
        print('%s.%s' % (a, b))
    else:  # 如果n为空
        print('%s' % a)
    num = input("请输入需要转换的十进制数:")
    if num == "N":
        exit(0)
    R = input("将十进制转化为:")

Guess you like

Origin blog.csdn.net/2301_77160836/article/details/132874540