while True: try: a = input() # 输入的字符串 # step 1 out1 = a.replace(' ','') #第一步 将空格转换为空则完成步骤一 # step 2 # 第二步 按照除以2余数分奇数偶数分别分成两个列 ji = '' ou = '' for i in range(len(out1)): if i%2==0: # 奇数 ou+=out1[i] else: # 偶数 ji+=out1[i] # 对奇偶列分别排序 ou2 = sorted(ou) ou2_idx = 0 ji2 = sorted(ji) ji2_idx = 0 # 新建空字符,再次遍历,依次将奇偶列中元素按次序组合形成output2 out2='' for i in range(len(out1)): if i%2==0: # 奇数 out2 += ou2[ou2_idx] ou2_idx +=1 else: # 偶数 out2 += ji2[ji2_idx] ji2_idx +=1 # step 3 for each in out2: if each in 'ABCDEFabcdef0123456789': # 注意不能用isalpha因为并非全部字母! two = bin(int(each,16))[2:] # 16进制转10进制再转2进制,扣除进制符号的前缀 two = two.zfill(4) # 由于是16进制的单个需要4位的2进制才够,也如例中4位,那么这里就需要对其扣掉0b的部分往前补0,补满4位 two = two[::-1] # 倒序 two = format(int(two,2),'x').upper() # 这里填补或不填补的字符表达的2进制数,可以用format直接转成16进制的字符,再对其大写 print(two,end='') #对需要改写的最终结果输出并以空字符链接下一个输出 else: print(each,end='') #对不需要改写的输出本身并以空字符链接下一个输出 except: break