2015-03-31 120 views
-3

我正在努力克服Python中的問題/任務,並且我非常想法。我需要從一個文件中讀取兩行,對這些行中的一行(從用戶輸入的數據中確定的多個文件中排序)進行排序,但在俱樂部運行的情況下返回這兩個數據。用戶的平均每小時英里數將在幾周後計算並存儲在一個.txt文件中,並與存儲在程序開頭的用戶ID一起存儲,程序的最後一部分將需要讀取這些文件(用戶ID和平均每小時里程數),並按照每小時的平均里程數進行排序,同時保留用戶標識(將兩者一起返回以允許彙總)。然後我需要說出排名前幾位的選手。任何幫助將不勝感激,我還沒有使用SQL等,只是逐行,標準的Python。我的代碼沒有進行優化,但現在我處於最佳狀態。另外,我的朋友建議我使用元組,但我不知道從哪裏開始誠實。請原諒任何'基本錯誤'。我也玩過元組,但從來沒有把它們妥善地整合起來,因爲我不知道從哪裏開始。同時也發現將變量保存爲與操作符的衝突問題,這意味着如果不定義每個人和每個人,就不能全局化它們。Python列表/元組在排序方面

def retrieve(): 
global datasave,y ###don't know where to go from this as it does not work 
y=1 
if y>3: #just practiced with 2 'users' 
    y=str(y) 
    print("All members entered and saved, a comparision of average miles per hour will be intiated") 
    file=open(y+".txt",'r') #saves files in which they occur for easy 'read' 
    datasave=file.readline(5) 
    datasave,y=datasave #gave me a 'cannot assign to operator' error 
    y=int(y) 
    y=y+1 
else: 
    avmphlist=[datasave1,datasave2,datasave3,datasave4,datasave5,datasave6,datasave7,datasave8,datasave9,datasave10] 
    sorted(avmphlist) 
    print(avmphlist) 
    print("Unfortunately ",avmphlist[9]," and ",avmphlist[10],"have not made the team, thank you for your participation") 
    print("Congratulations to ",avmphlist[1],", ",avmphlist[2],", ",avmphlist[3],", ",avmphlist[4],", ",avmphlist[5],", ",avmphlist[6],", ",avmphlist[7]," and ",avmphlist[8],) 
+0

你的標題是非常含糊和誤導。 – 2015-03-31 16:49:14

+3

整個問題非常模糊......你的代碼在哪裏?你有什麼嘗試?什麼沒有工作? – lodo 2015-03-31 16:51:06

回答

1

開始與定義你的數據

元組的列表
runnerData = [("TestName1", 70),("TestName2", 50), ("TestName3", 60)] 

現在使用的inbuild排序方法:

sortedRunnerData = sorted(runnerData, key=lambda data: data[1]) 

現在,你有你的數據的元組的排序列表(上升)。如果你需要以降序剛剛扭轉名單:

sortedRunnerData.reverse() 

現在列表sortedRunnerData列表包含降序排列數據。