排序和输出问题

时间:2013-04-06 03:40:46

标签: python sorting python-3.x

我在排序和输出方面遇到了一个问题。我不知道该怎么做。

该计划的主要思想:

  1. 输入乘客总数。
  2. 输入细胞总量。
  3. 输入乘客的数据n次(根据第一次输入) - 例如:Qwe 11:25 12:34。
  4. 输出排序数据。输出应该是这样的:乘客姓名,单元号。
  5. n = int(input())
    k = int(input())
    data = []
    
    for x in range(1,n+1):
        data.append(input().replace(":"," ").split(" "))
    
    
    for elem in data:
        elem.append(int(elem[1])*60+int(elem[2]))
        elem.append(int(elem[3])*60+int(elem[4]))
    
        while len(elem)>3:
            elem.pop(1)
    
        if elem[1]>elem[2]:
            raise SystemExit("time of issuing can not be lower than time putting")
    

    程序的示例输入:

    4    
    2     
    Qwe 12:45 16:30    
    Wer 13:55 17:50    
    Ert 6:25 12:55    
    Rew 22:55 23:30
    

    输出:

    Ert 1    
    Qwe 2
    Wer 2    
    Rew 1
    

    “Wer”也可以跳过,因为细胞限制(这是一个开始练习,所以它并不意味着你需要这么好的代码来覆盖一切)。我可以尝试解释单元格如何工作,但我认为从示例输出中可以很清楚 - 它基于发布时间和时间进行比较。

    我正在尝试学习Python,如果有人会回答我应该做些什么来完成我的脚本,或者更确切地说使用其他想法,那将会很感激。

    UPD: 我有这样的事情:

    data = sorted(data, key=lambda elem: elem[1])
    for elem in data: #Just visual check
        print(elem)
    
    for x in data:
        if j<=k:
            if data[i][2]>data[i+1][1]:
                print(data[i][0], j+1)
                j+=1
                i+=1
            else:
                j=0
                print(data[i][0], j+1)
        else:
            j=0
    

    但它仍然不是我想要的。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以在距离Sorting HOWTO约五分钟内学习Python的基础知识。

在您的脚本中,您似乎正在解析时间,但正在elem[0]丢失乘客信息。你将需要它进行最后的排序。此外,您已将所有数据附加到一个列表中,而不是将行保持分开(这对于排序是必要的)。

使用Sorting HowTo花几分钟时间,可以帮助您了解如何整理数据以使其可排序。