2022携程秋招python题(航班排序)

排序题,要求输入输出如下
输入要求:
输入第一行为整数n,代表有n条结果,要求n大于0小于400
第二行"NLXY299 1561 02:11"中"NLXY299 "代表航班编号(长度为7的字符串),"1561"代表金额([500,2000]整数),"02:11"代表时间(HH:MM),中间用空格间隔。
输出要求:
输出2n行,1~n行为按价格从低到高,输出顺序为金额、时间、航班编号;
n+1~2n行为按起飞时间,输出顺序为时间、金额、航班编号。
另:编译器环境不包含任何包,pandas、numpy均无。

示例如下:

# 输入
5
NLXY299 1561 02:11
KZHJ784 994 06:18
KRYH108 1883 12:57
TWNT020 1659 16:06
MKBS722 758 16:21
# 输出
758 16:21 MKBS722
994 06:18 KZHJ784
1561 02:11 NLXY299
1659 16:06 TWNT020
1883 12:57 KRYH108
02:11 1561 NLXY299
06:18 994 KZHJ784
12:57 1883 KRYH108
16:06 1659 TWNT020
16:21 758 MKBS722
# 不要求使用函数,也可以直接写
# 题中限制n的大小,我这里并没有限制,好像没必要
# 代码略显粗糙,jupyter是不识别数据换行的
def sort_plant_info():
    input_info=input().split()
    input_n=int(input_info[0])
    list_info=list()
    for i in range(input_n):
        list_info.append((input_info[2+i*3],int(input_info[1+i*3]),input_info[3+i*3]))
    for i in range(input_n):
        list_info.sort(key=lambda x:x[1])
        print(list_info[i][1],end=' ')
        print(list_info[i][2],end=' ')
        print(list_info[i][0],end=' ')
        print('\b')
    for i in range(input_n):
        list_info.sort(key=lambda x:x[2])
        print(list_info[i][2],end=' ')
        print(list_info[i][1],end=' ')
        print(list_info[i][0],end=' ')
        print('\b')

if __name__ == '__main__':
    sort_plant_info()

这个题相对于其他的公司还算比较简单,主要是非计算机专业在这种编译器环境下很容易一下子想不出办法。题目还是简单的。
代码粗糙,欢迎讨论!

# pycharm是识别换行的,所以数据读取要用sys
import sys
input_n=sys.stdin.readline().strip(' ') # 读取第一行n
input_info=list() # 建立初始list
n=0 # 初始化读取行数
# 逐行读取
while int(input_n)>n:
    input_info_line=sys.stdin.readline().strip('').split()
    # 注意:这里一定要int,一定要转化成tuple要不后面不能排序
    input_info.append((input_info_line[0],
                       int(input_info_line[1]),
                       input_info_line[2]))
    n+=1
input_info.sort(key=lambda x:x[1])
for i in range(int(input_n)):
    print(input_info[i][1],end=' ')
    print(input_info[i][2],end=' ')
    print(input_info[i][0],end=' ')
    print('\b')
input_info.sort(key=lambda x:x[2])
for i in range(int(input_n)):
    print(input_info[i][2],end=' ')
    print(input_info[i][1],end=' ')
    print(input_info[i][0],end=' ')
    print('\b')
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值