掉进悬崖的小白实现:任意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())

说明
此功能函数并不完善,需要自我约束使用,请大佬们多加指点修正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值