python-古籍翻译

题目描述

小理跑到外星人的图书馆去读书。有一本外星古籍,里面的内容是用八进制写成的;但小理只能处理十六进制的数据。请你帮忙写一个翻译软件,帮小理把八进制串翻译成十六进制串。

输入

仅一行,一个八进制字符串 s,表示古籍内容。

输出

仅一行,一个十六进制字符串,表示翻译结果。

样例输入1

144

样例输出1

64

样例输入2

1572061125

样例输出2

de86255

提示

数据规模与约定

对于 40% 的数据,有 ∣s∣≤10 ,即输入字符串长度不超过 10

对于 100% 的数据,有 ∣s∣≤1000 ,即输入字符串长度不超过 1000

样例解释

第一组样例:八进制 144 即十进制下的 100,其十六进制表示为 64

第二组样例:八进制 1572061125 即十进制下的 233333333,其十六进制表示为 de86255

来源/分类(难度系数:一星)

进制转换 字符串

完整代码展示:

a=int(input())

b=list(str(a))

b.reverse()

sum=0

for i in range(0,len(b)):

      sum+=eval(b[i])*8**i

res = hex(sum).lower()

print(res[2:])

a=int(input())
b=list(str(a))
b.reverse()
sum=0
for i in range(0,len(b)):
    sum+=eval(b[i])*8**i
res = hex(sum).lower()
print(res[2:])

代码解释:

a=int(input()) ”,导入用户需要转换的八进制数字。

b=list(str(a))

  b.reverse()  ”,将数字a转换为字符串并储存在列表b中,接着将b反转。

sum=0

  for i in range(0,len(b)):

        sum+=eval(b[i])*8**i   ”,令sum=0,接着遍历b中元素,sum+=eval(b[i])*8**i。

res = hex(sum).lower() ”,利用内置十六进制转换函数hex()将十进制数字sum转换为十六进制数字res。

print(res[2:]) ”,打印res的第二至最后一个元素(转换得到的res前两个元素为进制标识符,需舍弃)。

运行效果展示:

拓展延伸:

(一):

hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。

语法:hex(x)

参数说明:x – 10进制整数

返回值:返回16进制数,以字符串形式表示。

实例:

print(hex(255))

>>>0xff

 (二):

oct() 函数将一个整数转换成8进制字符串。

如果传入浮点数或者字符串均会报错。

语法:oct(x)

参数说明:x – 整数。

返回值:返回8进制字符串。

实例:

print(oct(10))

>>>0o12

(三):

bin() 返回一个整数int或者长整数long int的二进制表示。也就是将一个整型数字转换成二进制表示

语法:bin(x)

参数:x – int或者long int数字

返回值:字符串。

实例:

print(bin(1))

>>>0b1

(四):

chr() 用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

语法:chr(i)

参数:i – 可以是10进制也可以是16进制的形式的数字。

返回值:返回值是当前整数对应的ascii字符。

(ord()函数是chr()函数的逆函数)。

实例:

print(1)

>>>0x1

                             (部分内容来源于网络) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪云-微星

感谢大家的支持与鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值