题目中有几个没交代清楚的: 
   1.只用处理0-9和a-f 的字符,除此之外不用处理直接添加 
   2.如果转换为2进制后不够4位,需要末尾补零。 
   处理过程: 
   1.合并两字符串 
   2.按奇,偶位分别排序 
   3.再合并字符串 
   4.处理转换并返回 
       4.1为节省时间0不用转 
       4.2  16进制转2进制并反转 
       4.3  不够4位要末尾补零 
       4.4 再转换回去 
       4.5 拼接  
 def translate(org_str): trans_str = '' append = '0000' for i in org_str: #优化,为零的话不用处理 if i == '0' : trans_str += i continue #只用转换0-9和a-f的字符 if i.isdigit() or (i.isalpha() and i.upper()<'G'): #16进制转2进制并反转字符 trch = str(bin(int(i,16)))[:1:-1] #不够4位要补零 if len(trch)<4 : trch += append[:4-len(trch)] #2进制转16进制并大写 trans_str += str(hex(int(trch,2)))[2::].upper() else : trans_str += i return trans_str while True: try: #获取字符串 string = "".join(input().split()) #按奇数位和偶数位分开字符串并排序 a = sorted(string[::2]) b = sorted(string[1::2]) org_str = '' i = 0 #合并字符串,只会有a串长于b串的情况,或者两串长度相等 for i in range(len(a)): if i >= len(b): org_str += a[i] break else : org_str += a[i]+b[i] i+=1 print(translate(org_str)) except: break
  
 

京公网安备 11010502036488号