"""
对几个硬盘内存按照容量大小排序:
对提供的几个不同容量的硬盘从小到大排序
输入: 第一行为 硬盘数量,后面每行为 每个硬盘的大小 (单位是M,G,T的组合形势), eg. 3M2G, 1024M, 5G12M, 2T15M
输出: 按从小到大的顺序输出 (注意同等大小的硬盘(eg.1024M 和 1G),需要保序输出)
举例:
3
1T
3M2G
输出:
3M2G
2G5M
1T
"""
while True:
try:
s =[] # 磁盘容量数组
for i in range(int(input())):
string = input()
total = 0
a=""
for ch in string:
if ch.isdigit():
a+=ch
else:
if ch.lower()=="m":
total += int(a)
elif ch.lower()=="g":
total += int(a)*1024
elif ch.lower()=="t":
total +=int(a)*1024*1024
a=""
s.append([string,total])
new = sorted(s,key =lambda x :x[1])
for i in new:
print(i[0])
except:
break
第二种解法:
def convert(s):
"""
将输入的磁盘容量字符串:换算单位:M
"""
m = s.lower().find("m")
t = s.lower().find("t")
g = s.lower().find("g")
rk = sorted([m,t,g])
s_split =[]
pre =-1
for index,value in enumerate(rk):
if value!=-1:
s_split.append(s[pre+1:value+1])
pre = value
# s = s[value+1:]
res = 0
for index,value in enumerate(s_split):
if value[-1].lower()=="m":
res+=int(value[:-1])
elif value[-1].lower()=="g":
res+=int(value[:-1])*1000
elif value[-1].lower()=="t":
res+=int(value[:-1])*1000*1000
# res += int(value[:-1])*(1000**index)
return res
convert("4G3M")
代码已跑通,case通过率100%。阅读到的朋友烦请支持:代码路漫漫