while True:
try:
a = input()
a = a.split()
b = a[0] + a[1] #将输入的两个字符串拼接
b = list(b)
for i in range(len(b)):
b[i] = ord(b[i]) #转化为ascll码
len_b = len(b)
b_1 = []
b_2 = []
if(len_b % 2 == 0): #若b包含偶数个字符
for i in range(0,len_b,2): #i每次+2
b_1.append(b[i]) #奇数位放到b_1
b_2.append(b[i + 1]) #偶数位放到b_2
else: #若b包含奇数个字符
for i in range(0,len_b - 1,2): #前len(b) - 1个字符分奇偶位置分别放入到b_1,b_2
b_1.append(b[i])
b_2.append(b[i + 1])
b_1.append(b[len_b - 1]) #b的最后一个字符是奇数位,放入到b_1
b_1.sort() #奇偶位置分别按照ascll码排序
b_2.sort()
if(len_b % 2 == 0): #再按照奇偶和排序后的位置放回b中
k = 0
for i in range(len(b_1)):
b[k] = b_1[i]
b[k + 1] = b_2[i]
k = k + 2
else:
k = 0
for i in range(len(b_2)):
b[k] = b_1[i]
b[k + 1] = b_2[i]
k = k + 2
b[-1] = b_1[-1]
for i in range(len(b)): #再从ascll码变回到字符
b[i] = chr(b[i])
d = []
i = 0
for i in range(len(b)): #开始按题目要求变换
if(b[i].isdigit()): #如果字符是数字
c = '{:04b}'.format(int(b[i])) #'{:04b}'.format()是用来将十进制转化为四位的二进制
c = str(c)
c = c[::-1] #将四位二进制倒转
c = '0b' + c #加上0b代表为二进制
c = int(c,2) #再转化为十进制
c = hex(c) #再转化为16进制
c = c[2:] #去掉转化后的0x
if(c.islower()):#如果转化后的是a~f(10-15)按照输出的要求转化为大写
c = c.upper()
d.append(c) #放到新的d中
else: #若是字母
if(b[i].lower() <= 'f') & (b[i].lower() >= 'a'): #若是A~Z 或者 a~z 则开始转换
hex_b = '0x' + b[i] #0x代表十六进制
c = bin(int(hex_b,16)) #转化为十进制再转化为二进制
c = c[2:] #去掉转化后带的二进制标志0b
c = c[::-1]#逆序(不能带标识逆序)
c = '0b' + c #再加上二进制标识
c = hex(int(c,2)) #再转为16进制
c = c[2:] #去掉0x
if(c.islower()): #若是小写则按输出要求转化为大写
c = c.upper()
d.append(c) #放入d
else:#若是其他的字符,则直接放入
d.append(b[i])
print(''.join(d)) #按要求输出
except:
break
实际上,这道题就是十六进制转四位二进制再逆序再转十六进制,中间需要转为十进制来辅助变换