重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

蓝桥10基础练习十进制转十六进制python-创新互联

1.先考虑将数据转化成二进制,然后在四位一组转化成十六进制

目前成都创新互联公司已为上千余家的企业提供了网站建设、域名、虚拟空间、成都网站托管、企业网站设计、肃南裕固族自治网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
map = {10:'A',11:'B',12:'C',13:'D',14:'E',15:'F'}
n = int(input())
m=1#循环中是1,10,100,1000.。。不断乘十,代表了二进制不同位数(其实是用十进制表示二进制)
a=0
#表示最终结果,这里实际是用十进制数字保存二进制结果,方便后面转换成十六进制,考虑其实用列表保存也可以
while(n>0):
    a += (n%2)*m
    m*=10
    n/=2
print(a)

首先代码尝试转化成二进制,出现如下错误:OverflowError: int too large to convert to float

查找原因:原因是n%2会产生一个float类型的数据,需要强制转换成Int,修改成如下代码就可以了。

map = {10:'A',11:'B',12:'C',13:'D',14:'E',15:'F'}
n = int(input())
m=1
a=0
while(n>0):
    a += int((n%2))*m
    m*=10
    n/=2
print(a)

2.从二进制转化成十六进制。写完之后发现了一些问题:

·n/m得到的是一个float类型的小数,也需要转化成int类型

·先转化成二进制表示再转化成十六进制其实是一种很愚蠢的办法,因为数据范围很大,有时候用二进制表示出来会超出范围

最终这种办法以失败告终,接下来尝试直接十进制转十六进制。

map = {10:'A',11:'B',12:'C',13:'D',14:'E',15:'F'}
n = int(input())
m=1
a=0

while(n>0):
    a += int((n%2))*m
    m*=10
    n/=2
#print(a)
s=''
b=a
f=1
while(f==1):
    if(a>=10000):
       b = int(a/10000)
       a = int(a % 10000)
    else:
        b=a
        f=0
    num=0

    num += int(b/1000)*8#取第四位乘以8
    b=int(b%1000)
    num+=int(b/100)*4#取第三位数乘以4
    b = int(b%100)
    num+=int(b/10)*2
    b = int(b%10)
    num+=b
    b=0
    if(num<=9):
        s+=str(num)
    else:
        s+=map.get(num)

print(s)

3.十进制直接转十六进制

map = {10:'A',11:'B',12:'C',13:'D',14:'E',15:'F'}
n = int(input())

s=''
while(n>0):
    a = int(n%16)
    n = int(n/16)

    if (a<= 9):
        s+=str(a)
    else:
        s+=map.get(a)
print(s[::-1])

最终这种方法只能拿到90分,说明还是有漏洞,但是目前没有找到

4.直接使用自带类型转换,这种方法可以拿到满分

map = {10:'A',11:'B',12:'C',13:'D',14:'E',15:'F'}
n = int(input())
s = hex(n).replace("0x",'').upper()
print(s)

补充:1.十进制转换为二进制bin(int类型),八进制oct(int类型),十六进制hex(int类型)

其他进制转化成十进制int(str,原本的进制)

2.字符串替换replace函数:str.replace(old, new[, max])

3.小写转大写upper函数:str.upper(),大写转小写:str.lower()

类似的题目

11 基础练习十六进制转十进制

s = input()
print(int(s,16))

12 基础练习 十六进制转八进制

x = int(input())
for i in range(x):
   s = input()
   print(str(oct(int(s, 16))).replace('0o',''))

详细请看:蓝桥杯练习系统十进制转十六进制(python)

      

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页名称:蓝桥10基础练习十进制转十六进制python-创新互联
分享URL:http://cqcxhl.cn/article/csojjh.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP