7-10 你究竟有几个好妹妹(python)

小李的QQ列表里有很多联系人,他修改了所有人的备注姓名。其中有些联系人名字的前部或后部被加了诸如"好妹妹"的字样。请你打印出小李的所有的女性"好妹妹"。打印时请按照联系人原始名字升序排列,如果两人名字相同则年龄小的排在前面;如果两人年龄相同,则较早成为好友的排在前面。题目保证好妹妹标志不会同时出现在前缀和后缀,同一天里也不会添加名字相同并且年龄相同的"好妹妹"。

输入格式:

第一行给出标识好妹妹标志的字符串,该字符串内不包含空格,最大长度为6并且不区分大小写。第二行给出QQ列表的所有联系人个数n (1≤ n ≤105),随后n行列出所有联系人信息,每行信息格式如下:

备注姓名 性别 年龄 结交好友日期

其中备注姓名不超过30个字符;性别用字符表示,F表示女性,M代表男性;结交好友日期采用诸如"2001.01.01"的格式表示。

输出格式:

第一行输出好妹妹的数目k,随后k行打印出去掉好妹妹标志的名字、年龄以及结交好友日期。

输入样例:

例如:

hmm
10
Zoehmm F 28 2001.01.01
hmmBeith F 18 2010.10.21
Zack M 35 1999.09.18
hmmAdam F 21 2010.10.21
Beithhmm F 21 2010.10.21
Chelse F 45 2005.12.03
DaisyHMM F 30 2008.08.05
Eston M 18 2015.03.04
hmmFrany F 8 2018.07.15
JackHM F 7 2017.09.11

输出样例:

输出:

6
Adam 21 2010.10.21
Beith 18 2010.10.21
Beith 21 2010.10.21
Daisy 30 2008.08.05
Frany 8 2018.07.15
Zoe 28 2001.01.01

 实现代码

logo=input().strip().lower()  #去除首尾空格,并将输入的字符串全部小写
n=int(input())
d=[]
# 处理数据,存储含有logo的列表
for i in range(n):
    a=input().split()
    if(a[1]=='F'):  #存储女性信息
       #判断logo是否存在名字里面
        if(logo in a[0].lower() and len(a[0])>len(logo)):  
            index=a[0].lower().index(logo) #找到logo第一次出现的下标
            if(index==0): #下标为0,说明在前面出现
                a[0]=a[0][3:]
            else:  #说明在尾出现
                a[0]=a[0][:-3]
            a.remove(a[1])  #移除性别信息
            d.append(a)
    else:
        continue
print(len(d))
d.sort(key=lambda x:(x[0],x[1],x[2]))  #按照名字,再按年龄,再按加好友时间排序
for i in d:
    print(*i)

需要注意的是去除“hmm”标志的判断,标志可能在首尾出现,但是在中间也有可能出现。

关键排序按照先名字,后年龄,最后时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值