while True: # 反复使用可执行程序,所以外部加while循环 try: c=input() # 输入一个字符串 c1 = [a for a in c if a.isalpha()] # 获取该字符串中所有的字母记录在列中 c1 = sorted(c1,key=str.upper) # 对字母列的元素,首先都将其统一大写或统一小写之后再排序,这样就避免了字母大小写对排序的干扰 # 注意 key使用只是在排序过程中的计算过程 实际上并不会改变输出结果中的原来字母的值和大小写 # 这样一来 巧妙完成了规则1和规则2 # 接下来,再次遍历原来的字符串,同样的判断,若是字母,那么我们就依次提取c1中的元素,若不是字母则提取 # 原字符串中本身的非字母其他 index = 0 # 为了方便依次提取c1中的元素 new_str='' # 新造的字符串,初始为空 for each in c: if each.isalpha(): new_str+=c1[index] index+=1 else: new_str+=each print(new_str) except: break