【机试题(实现语言:python3)】字符串合并处理-进制转换

题目描述
按照指定规则对输入的字符串进行处理。

详细描述:

将输入的两个字符串合并。

对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。

对排序后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符为‘4’,为0100b,则翻转后为0010b,也就是2。转换后的字符为‘2’; 如字符为‘7’,为0111b,则翻转后为1110b,也就是e。转换后的字符为大写‘E’。

举例:输入str1为"dec",str2为"fab",合并为“decfab”,分别对“dca”和“efb”进行排序,排序后为“abcedf”,转换后为“5D37BF”

注意本题含有多组样例输入

输入描述:

本题含有多组样例输入。每组样例输入两个字符串,用空格隔开。

输出描述:

输出转化后的结果。每组样例输出一行。

示例1
输入

dec fab
DKSq8qykpgKIZxiRKmQ9QkZt909PffE6Gyfc57dBx7p20D42bWJRzKqGGCzzQ4p7Z32Dsx2Cf8G2841lPuAZNb K0fHodOVFlbl220ov260TPOrmZ328d1E89OatcL88EXr622RdklXtXazO7wMoc6DEKU45eQ5VBUy2YFjgJX
hAWK8umt8F17X5IE74tTG526SEwCd9520r5NvA20H6T28YVeP5nbQ4459I9G7W qXr9OOvzq9Do5WF8M4ANEkto79IQ3tF9sPK36q2w8y4In9BR1mOm

输出

5D37BF
000080844444444444C42CA2A2626A661E1E1E1E11919959BD7D73F3FBGBGBG7J7KGKHKILJNKOKOKOMOPPPQRQRQRQVSWTXUXUYVZXZX5ZDZ3Z353DBDBB7BFFgFjFkFkgkilllmlomoopqpqprqrsttutxvxwyxyyzzzz
0084844C4242C22A2AAAAAA666EEE1E919191919999555D3B777FFFGGIHIIKINKNMOOPOQPRQTSWTWVXWYXDB7hkmmnmnoqoqqrrsttttuvwvywz

代码实现:

import string
def func():
    while True:
        try:
            lists = input().split(' ')
            #print(lists)
            list1 = list(lists[0])
            list1.extend(list(lists[1]))
            list1[::2] = sorted(list1[::2])
            list1[1::2] =  sorted(list1[1::2])
            #print(list1)
            hex_num = ['0', '1', '2', '3',
                       '4', '5', '6', '7',
                       '8', '9', 'a', 'b',
                       'c', 'd', 'e', 'f',
                       'A', 'B', 'C', 'D',
                       'E', 'F']
            for k,v in enumerate(list1):
                if v in hex_num:
                    ten = int(v,16)
                    res = format(ten,'b').rjust(4,'0')
                    res = res[::-1]
                    res = format(int(res,2),'x')
                    res = str.upper(res)
                    list1[k] = res
            print(''.join(list1))         
        except Exception as e:
            #print(e)
            break
if __name__ == '__main__':
    func()
            
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值