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’
(部分内容来源于网络)