【发布时间】:2019-11-23 02:56:59
【问题描述】:
我根据得分、上场时间、罚球和效率对 NBA 排名前十的篮球运动员进行排名。但是,当我打印排名时,排名不正确。似乎是根据数字中每个字符的值对它们进行排名,但我希望它们按照前面提到的值的最高数量到最低数量进行排名。
我的代码:
def readData(filename):
inputFile = open(filename, 'r')
inputFile.readline()
master_data_list = []
for line in inputFile:
master_data_list.append(line.split(","))
return master_data_list
def points(master_data_list):
pointList = []
for player in master_data_list[:-3]:
index = (player[1], player[2], player[6])
pointList.append(index)
return pointList
def minutes(master_data_list):
minutesList = []
for player in master_data_list[:-3]:
index = (player[1], player[2], player[5])
minutesList.append(index)
return minutesList
def freethrows(master_data_list):
freethrowsList = []
for player in master_data_list[:-3]:
index = (player[1], player[2], player[18])
freethrowsList.append(index)
return freethrowsList
def efficiency(master_data_list):
effList = []
for player in master_data_list:
formula = int(((player[6] + player[9] + player[10] + player[11] + player[12])-((player[15] - player[16]) + (player[17] - player[18]) + player[13]))/(player[4]))
index = (player[1], player[2], formula)
effList.append(formula)
return effList
def main():
master_data_list = readData("player_career.csv")
pointList = points(master_data_list)
minutesList = minutes(master_data_list)
freethrowsList = freethrows(master_data_list)
#effList = efficiency(master_data_list)
#got this code from
pointList = sorted(pointList, key = lambda x: x[2], reverse = True)
minutesList = sorted(minutesList, key = lambda x: x[2], reverse = True)
freethrowsList = sorted(freethrowsList, key = lambda x: x[2], reverse = True)
#effList = sorted(effList, key = lambda x: x[2], reverse = True)
print("Top 10 players based on total points scored.")
for line in pointList[:10]:
print(line[0], line[1]+"-"+line[2])
print()
print("Top 10 players based on total minutes.")
for line in minutesList[:10]:
print(line[0], line[1]+"-"+line[2])
print()
print("Top 10 players based on total free throws.")
for line in freethrowsList[:10]:
print(line[0], line[1]+"-"+line[2])
print()
"""
print("Top 10 players based on total efficiency.")
for line in effList[:10]:
print(line[0], line[1]+"-"+line[2])
print()
"""
代码的输出:
基于总得分的前 10 名球员。
Terrell Brandon-9994
Rony Seikaly-9991
大卫·沃恩-998
巴迪珍妮特-997
Irv Torgoff-997
格雷格·巴拉德-9953
拉尔夫·辛普森-9953
约翰·卢卡斯-9951
唐·科吉斯-9948
菲尔·切尼尔-9931
基于总分钟数的前 10 名球员。
Fred Hoiberg-9976
查理·约翰逊-9972
斯图尔特·格兰杰-996
加里·格雷戈-996
基思·博根斯-9957
Al Wood-9939
肯尼·加蒂森-9930
威利斯·贝内特-993
杰克·莫利纳斯-993
科里布朗特-9925
根据总罚球数排名前 10 位的球员。
库尔特·兰比斯-999
查理·斯科特-998
沃尔特卫斯理-998
阿尔伯特·金-996
卢修斯·哈里斯-994
约翰尼·诺伊曼-991
弗兰克·约翰逊-990
玛迪·柯林斯-99
Calvin Garrett-99
鲍勃·拉基-99
我还没有做效率,所以不包括在内。
这是输入文件的示例:
如果有人有想法让他们正确排名,谢谢。
【问题讨论】:
-
您的积分是否存储为字符串整数?在我看来它们是字符串,所以按字母顺序排序。
-
您可以发布输入文件内容的示例吗?
标签: python