欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MOOC数据结构python练习题--第五章-例一

程序员文章站 2022-04-02 23:03:51
...

1.题目内容: 给定一个M进制的数,请将其转换为N进制并输出
输入格式: 两行,第一行为空格分隔的两个数字,分别为10进制表示的M与N;其中M, N均满足2 ≤ M、N ≤ 36 第二行为待转换的数字,其中每位超过9的部分从10至36分别用大写字母A-Z表示;输入数据保证其中最大位数对应数字不超过M
输出格式: 一行字符串,表示转换后的N进制数
输入样例: 8 16 ‭473‬
输出样例: ‭13B‬

#相关课堂例题:
def toStr(n,base):
    convertString='0123456789ABCDEF'
    if n<base:
        return convertString[n]
    else:
        return toStr(n//base,base)+convertString[n%base]
    
print(toStr(1453,16))

解答思路

  1. string 不能直接除base,
  2. 转化成纯int再除base–M(>10)进制转化成10进制
  3. 10再转化成N进制

方法:

1.构建字典
A=10 B=11 C=12

'''

构建字典法
'''
#构建字典
convertString='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
dic10={}
for i in range(len(convertString)):
    dic={}.fromkeys((convertString[i]), i)
    dic10=dict(dic10,**dic)
    
#转化成10进制
def to10(NUM,M):
    result=0
    for i in range(len(NUM)):#第一位不需要
        t=dic10[NUM[-(i+1)]]*(M**i)#注意逆序
        result=result+t
    return result 
        
#化成N进制

def toStr(numNew,N):
    if numNew < N:
        return convertString[numNew]
    else:
        return toStr(numNew//N,N) + convertString[numNew%N]
    
M,N = map(int,input().split(" "))
NUM = input()
numNew = to10(NUM,M)    
print(toStr(numNew,N))

MOOC数据结构python练习题--第五章-例一

有一个不太对,然后to_10的时候,还是不太会用递归的思维,用了循环,求大佬解答