2013-04-06 73 views
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 

“疫情周报” 也可以被跳过,因为细胞的限制(这是一个开始锻炼,所以它并不意味着你需要一个能覆盖所有东西的好代码)。我可以尝试解释单元格是如何工作的,但我认为从示例输出中可以清楚地看出 - 它基于发布时间和比较时间。

我想学习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

您可以从Sorting HOWTO约五分钟内了解Python的基础知识。

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

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

+0

了类似 数据=排序(数据,键=拉姆达ELEM:ELEM [1]) 但任何想法我怎么能正确地跟踪手机号码?我的意思是,需要比较elem [2]和next elem [1]并重复它?我很不确定我该怎么做。 – 2013-04-06 10:08:40