2016-12-01 65 views
0

存在代码问题。获得了一个名为“racing.csv”的文件,该文件存储了“Drive”类中找到的变量。问题背后的概念是,程序应该对比赛时间(从最低到最高)进行排序,并将点数分配给前3名赛车手,然后将这些数据导出到新文件中。除了在调用驱动器上的shortBubbleSort时,所有代码都可以正常工作,并且不会正确排列比赛时间。帮助表示赞赏。对csv文件中的列进行排序(Python)

import csv 
class Drive(object): 
    driver = "" 
    team = "" 
    racetime = 0.0 
    points = 0 

    def __init__(self,driver,team,racetime,points): 
     self.driver = driver 
     self.team = team 
     self.racetime = racetime 
     self.points = points 

f = open('racing.csv', 'r') 
csv_f = list(csv.reader(f)) 

driverclasses = [] 
for i in range(len(csv_f)): 
    d = Drive(csv_f[i][0],csv_f[i][1],csv_f[i][2],csv_f[i][3]) 
    driverclasses.append(d) 

for row in csv_f: 
    print (row) 

for x in range(0, 6): 
    csv_f[x][2]=(input("Enter Racetime")) 

def shortBubbleSort(alist): 
    exchanges = True 
    passnum = len(alist)-1 
    while passnum > 0 and exchanges: 
     exchanges = False 
     for i in range(passnum): 
      if alist[i]>alist[i+1]: 
       exchanges = True 
       temp = alist[i] 
       alist[i] = alist[i+1] 
       alist[i+1] = temp 
     passnum = passnum-1 

shortBubbleSort(Drive) 
print(csv_f) 

csv_f[0][3] = 25 
csv_f[1][3] = 18 
csv_f[2][3] = 15 


f = open('RacingResults.csv', 'w') 
for row in csv_f: 
     print (row) 

回答

0

这有帮助吗?

**范围功能sintax *:range([start], stop[, step])

启动:启动序列号。

stop:生成数字,但不包括此数字。

step:序列中每个数字之间的差异。

def shortBubbleSort(alist): 
    for passnum in range(len(alist)-1,0,-1): 
     for i in range(passnum): 
      if alist[i]>alist[i+1]: 
       temp = alist[i] 
       alist[i] = alist[i+1] 
       alist[i+1] = temp 
+0

可能没有,因为还有很多其他问题:shortBubbleSort(Drive) –

+0

我试过一个简单的例子,我发布的解决方案似乎工作。让我们来看看@Sandy所说的:) –

相关问题