0

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

该方案的主要思想:

  1. 输入乘客总数。
  2. 输入细胞总数。
  3. 输入乘客数据 n 次(基于第一次输入) - 例如:Qwe 11:25 12:34。
  4. 输出排序后的数据。输出应该是这样的:乘客姓名,手机号码。
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,如果有人能回答我应该怎么做来完成我的脚本,或者更确切地说使用另一个想法,我将不胜感激。

更新: 我得到了这样的东西:

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

但这仍然不是我想要的。有任何想法吗?

4

1 回答 1

1

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

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

花几分钟阅读排序方法将帮助您了解如何组织数据以使其可排序。

于 2013-04-06T04:37:37.963 回答