weng_zh 发表于 2022-4-26 20:40

十进制与任意进制互转

使用int()函数实现任意进制转十进制,自定义函数conv()实现十进制转任意进制
注意:基的取值限2-36!def conv(m, n):
    # n为待转换的十进制数,m为新的基,m的取值为2-36
    # 新建列表,包含从0-9、A-Z,共36个字符
    a = []
    for i in range(10):
      a.append(i)
    for i in range(65, 91):
      a.append(chr(i))
    # 新建空列表,用来存放余数
    b = []
    while True:
      s = m // n# 求商
      t = m % n# 除权求余数
      b.append(t)# 将余数存进列表b
      if s == 0:
            break
      m = s
    b.reverse()# 逆取余
    for i in b:
      print(a, end='')
      # 输出对应进制每一位的值


A = input('A.十进制转换为其他进制/B.其他进制转为十进制\n')
if A == 'A' or A == 'a':
    y = eval(input('新的基设为:'))
    # 先判断基的范围,正确则直接调用自定义函数
    if y > 36 or y < 2:
      print('\033[31m输入错误!基的取值限2-36')
    else:
      x = eval(input('要转换的十进制数:'))
      print(f'{y}进制数为:', end='')
      conv(x, y)
elif A == 'B' or A == 'b':
    x = input('原数为:')
    y = eval(input('原数的进制为:'))
    print(f'十进制数为:{int(x, y)}')

xiadongming 发表于 2022-4-26 22:49

页: [1]
查看完整版本: 十进制与任意进制互转