python练习

"""
对几个硬盘内存按照容量大小排序:
对提供的几个不同容量的硬盘从小到大排序
输入: 第一行为 硬盘数量,后面每行为 每个硬盘的大小 (单位是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%。阅读到的朋友烦请支持:代码路漫漫

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值