Python练习 | 数制转换

题目名称:数制转换

时间限制:1000ms

内存限制:256M

题目描述:

由于人类长了十根手指,所以人类的计数最常用的数制就是十进制。 但是,计算机中最常用的进制是二进制,因为二进制可以用比较少的物理状态来表示。 可是二进制只有0和1两个数字,很容易写得很长,所以也经常使用八进制或十六进制。 八进制的数使用0到7八个数字来表示,逢八进一。 十六进制的数除了0到9这十个数字以外,还使用A到F这六个字母(A到F分别代表十进制的10到15)一共十六个符号来表示,逢十六进一。 请把输入的数字转换为十进制。 如果数字中只有0和1,那么就认为是二进制。 如果数字中只有0到7,那么就认为是八进制。 如果数字中有不止0到7,那么就认为是十六进制。 如果出现了0到9、A到F(不区分大小写)之外的字母,那么就请输出“NaN”

输入描述:

表示其他数制的数字n

输出描述:

转换为十进制的结果

示例 

输入:83721

输出:538401

#判断是否是二进制转换
def jinzhi2(n):
    a=0
    for i in n:
        if i == '0' or i == '1':
            a+=1
    if a==len(n):
        return True

#判断是否是八进制转换
def jinzhi8(n):
    s = ['2', '3', '4', '5', '6', '7']
    a=0
    b=0
    for i in n:
        if i=='0' or i=='1':
            a+=1
        elif i in s:
            b+=1
    if a>=0 and b>0 and a+b==len(n):
        return True

#判断是否是十六进制转换
def jinzhi16(n):
    a=['0','1','2','3','4','5','6','7']
    b=['8','9','a','b','c','d','e','f','A','B','C','D','E','F']
    p=0
    q=0
    for i in n:
        if i in a:
            p+=1
        elif i in b:
            q+=1
    if p>=0 and q>0 and p+q==len(n):
        return True


n=input("")
N=len(n)
num=0 #十进制数
'''计算最后转换成的十进制数'''
if jinzhi2(n):
    m=[int(i) for i in n]
    for i in range(N):
        num=num+m[i]*2**(N-1-i)
    print("二进制数转换")
    print("十进制数是:{}".format(num))
elif jinzhi8(n):
    m=[int(i) for i in n]
    for i in range(N):
        num=num+m[i]*8**(N-1-i)
    print("八进制数转换")
    print("十进制数是:{}".format(num))
elif jinzhi16(n):
    m=[i for i in n]
    for i in range(N):
        if m[i]=='a' or m[i]=='A':
            m[i]=10
        elif m[i]=='b' or m[i]=='B':
            m[i]=11
        elif m[i]=='c' or m[i]=='C':
            m[i]=12
        elif m[i]=='d' or m[i]=='D':
            m[i]=13
        elif m[i]=='e' or m[i]=='E':
            m[i]=14
        elif m[i]=='f' or m[i]=='F':
            m[i]=15
    m=[int(i) for i in m]
    for i in range(N):
        num=num+m[i]*16**(N-1-i)
    print("十六进制数转换")
    print("十进制数是:{}".format(num))
else:
    print("NaN")

你可能感兴趣的:(python,python,开发语言,算法,数据结构,学习)