题解 | #字符串合并处理# 左对齐 右对齐 中心对齐
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
import re while 1: try: s=input().split() s_join=s[0]+s[1] # decfab # 下标为奇数的字符和下标为偶数的字符分别按ascii码从小到大排序 d c a e f b # abcedf even,odd='','' for i in range(len(s_join)): if i%2==1: odd += s_join[i] elif i%2==0: even += s_join[i] even1=sorted(even) odd1=sorted(odd) s_join1='' for i in range(min(len(even1),len(odd1))): s_join1 += even1[i]+odd1[i] if len(even1)>len(odd1): s_join1 += even1[-1] elif len(even1)<len(odd1): s_join1 += odd1[-1] # 转换:每个i,16转2,不足4位需在前面补齐0,倒序,转16 #trans=bin(int(s_join1,16))[2:][::-1] # 先转10,再转2,去掉0b,再倒序,str trans='' for i in s_join1: if re.search(r'[0-9a-fA-F]',i): # re.search 扫描整个字符串并返回第一个成功的匹配,匹配失败则返回None trans += hex(int(bin(int(i,16))[2:].rjust(4,'0')[::-1],2))[2:].upper() else: trans += i print(trans) except: break # Eqr v9oEb12U2ur4xu7rd931G1f50qDo # 8084842CAE9B9G7D7BUFooqqrrrvuxu ''' n='4A' print(bin(int(n,16))) print(n.rjust(4,'0')) ''' ''' import re # 构造函数加密字符,如果是[0-9A-Fa-f]则按规则返回加密值,否则返回原始值 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() """ 1. int(x, 16) - 将字符x转成16进制 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",最后再将其转成大写。 """ else: return x while True: try: a = list(input().replace(" ", "")) # 去除输入中的空格,并将输入的字符处理成列表 a[::2] = sorted(a[::2]) # 奇数位置从小到大排序 a[1::2] = sorted(a[1::2]) # 偶数位置从小到大排序 res = "" for i in a: res += encrypt(i) # 调用加密函数,遍历输出结果 print(res) except: break '''
S.ljust(width,[fillchar]) #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。 S.rjust(width,[fillchar]) #右对齐 S.center(width, [fillchar]) #中间对齐 S.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足