PTA 7-6 p075病人排队 python

7-6 p075病人排队

病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:

老年人(年龄 >= 60岁)比非老年人优先看病。
老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。
非老年人按登记的先后顺序看病。

输入格式:

第1行,输入一个小于100的正整数,表示病人的个数;
后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:
一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。

输出格式:

按排好的看病顺序输出病人的ID,每行一个。

输入样例:

5
021075 40
004003 15
010158 67
021033 75
102012 30

输出样例:

021033
010158
021075
004003
102012

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

# 对一维数组进行排序()年龄数组
def fetch_bigger_60(target_arr):
    # 创建空数组,用来存放返回分开之后的数组
    res = []
    # 大于60的数组
    new_arr_bigger = []
    # 小于60的数组
    new_arr_younger = []
    for item in target_arr:
        if item >= 60 :
            new_arr_bigger.append(item)
        else:
            new_arr_younger.append(item)
    #         res[0] 为60岁以及以上的人的信息
    res.append(new_arr_bigger)
    #         res[1] 为60岁以下的人的信息
    res.append(new_arr_younger)
    return res

# # 将输入的二维数组转化为字典,
# def to_dict(target_arr):
#     new_dict = {}
#     for item in target_arr:
#         new_dict[item[1]] = item[0]
#     return new_dict

# 并将年龄数组提取出来-同时将年龄转化为整数-方便后续的排序
def get_age_arr(target_arr):
    new_arr = []
    for item in target_arr:
        new_arr.append(int(item[1]))
    return new_arr

# # 并将年龄数组提取出来-同时将年龄转化为整数-方便后续的排序
# def get_num_arr(target_arr):
#     new_arr = []
#     for item in target_arr:
#         new_arr.append((item[0]))
#     return new_arr


# 存放输入的二维数组
in_arr = []
num_of_person = int(input())
num = 1
while num <=num_of_person:
    # 接收每行的数据并存入列表中
    row =input().split()
    in_arr.append(row)
    num += 1
# 得到年龄列表
age_arr = get_age_arr(in_arr)
# 开始处理数据
elder_arr = fetch_bigger_60(age_arr)[0]
younger_arr = fetch_bigger_60(age_arr)[1]
# 降序排列
elder_arr.sort(reverse=True)
# 数组拼接
res_arr = elder_arr+younger_arr

for item in res_arr:
    for index in range(len(in_arr)):
        # 若结果数组中的年龄和输入二位列表中的元素的年龄相等,则输出其编号并将该患者的编号和年龄均置0
        if str(item) == in_arr[index][1]:
            print(in_arr[index][0])
            in_arr[index] = ['0','0']
            break
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逍遥创江湖

你的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值