知识点:1.只对列表中奇数或偶数单独排序:
奇数排序:a[::2] = sorted(a[::2]);偶数排序:a[1::2] = sorted(a[1::2]);
2.正则匹配数字及a-f大小写字母并判断是否存在x中:if re.search(r'[0-9A-Fa-f]',x):
3.进制转化中存在的问题:
1) int(x, 16) - 十六进制字符x转成10进制数字(题目中x代表十六进制,需要将十六进制转化为十进制)
2)bin(int(x, 16))[2:].rjust(4,'0')[::-1] - 将十进制转成二进制,并去除二进制开头"0b",如果二进制长度小于4,则在前面补0至四位,然后再倒序。
比如bin(int('7', 16))输出0b111,[2:]去除0b后为111,rjust(4,'0')左侧补0则变为0111,[::-1]倒序后变为二进制的1110
3.)hex(int(i,2)[2:].upper() - 其中i表示注释2的内容。这一步是将上一步获取的二进制转成十六进制,并去除开头的"0x",最后再将其转成大写。
import re
a = list(input().replace(' ',''))
a[::2] = sorted(a[::2])
a[1::2] = sorted(a[1::2])
def encrypt(x):
if re.search(r'[0-9A-Fa-f]',x):
return hex(int(bin(int(x,16))[2:].rjust(4,'0')[::-1],2))[2:].upper()
else:
return x
res = ''
for i in a:
res += encrypt(i)
print(res)

京公网安备 11010502036488号