2013-04-06 77 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