注意不是一下子将多行的输入一起排列,是一次只排列一行。我的做法是先把字母提取到一个字符串里,其他字符提取到另一个字符串里。字母的提取过程中已经包含了排序,最后输出时按照对应位置输出字母或字符。
try:
while True:
str1 = str(input())
cha = ''
specha = ''
k = []
flag = 0
for i in str1:
lcha = int(len(cha))
flag1 = 0
if(ord(i) >= 65 and ord(i) <= 90):
if(lcha == 0):
cha += i
else:
for j in range(lcha):
if(ord(cha[j]) >= 65 and ord(cha[j]) <= 90):
if(ord(i) < ord(cha[j])):
cha = cha[0:j] + i + cha[j:lcha]
flag1 = 1
break
if(ord(cha[j]) >= 97 and ord(cha[j]) <= 122):
if(ord(i) < ord(cha[j]) - 32):
cha = cha[0:j] + i + cha[j:lcha]
flag1 = 1
break;
if(flag1 == 0):
cha += i
flag += 1
elif(ord(i) >= 97 and ord(i) <= 122):
if(lcha == 0):
cha += i
else:
for j in range(lcha):
if(ord(cha[j]) >= 65 and ord(cha[j]) <= 90):
if(ord(i)-32 < ord(cha[j])):
cha = cha[0:j] + i + cha[j:lcha]
flag1 = 1
break
if(ord(cha[j]) >= 97 and ord(cha[j]) <= 122):
if(ord(i) < ord(cha[j])):
cha = cha[0:j] + i + cha[j:lcha]
flag1 = 1
break
if(flag1 == 0):
cha += i
flag += 1
else:
specha += i
k.append(flag)
flag += 1
res_str = ''
num1 = 0
num2 = 0
for i in range(len(str1)):
if(num1 < len(specha) and i == k[num1]):
res_str += specha[num1]
num1 += 1
else:
if(num2 < len(cha)):
res_str += cha[num2]
num2 += 1
print(res_str)
except:
pass


京公网安备 11010502036488号