0

在我无法让拆分工作之前。现在它正在工作,但只对列表列表的最后一个列表执行计算。我需要它来计算每个玩家的效率,而不仅仅是文件中的最后一个。

在计算之前我正在考虑一个while循环可能会解决我的问题,但我愿意接受建议。

def get_data_list (file_name):
    data_file = open(file_name, "r")
    data_list = []
    for line_str in data_file:

        # strip end-of-line, split on commas, and append items to list
        data_list =line_str.strip().split(',')

        gp=int(data_list[6])
        mins=int(data_list[7])
        pts=int(data_list[8])
        oreb=int(data_list[9])
        dreb=int(data_list[10])
        reb=int(data_list[11])
        asts=int(data_list[12])
        stl=int(data_list[13])
        blk=int(data_list[14])
        to=int(data_list[15])
        pf=int(data_list[16])
        fga=int(data_list[17])
        fgm=int(data_list[18])
        fta=int(data_list[19])
        ftm=int(data_list[20])
        tpa=int(data_list[21])
        tpm=int(data_list[22])

        efficiency = ((pts+reb+asts+stl+blk)-((fga-fgm)+(fta-ftm)+to))/gp        

        data_list.append (efficiency)

    return data_list

    file_name1 = input("File name: ")
    result_list = get_data_list (file_name1)
    print(result_list)

在此先感谢您的帮助。

4

1 回答 1

1

data_list在每次迭代中重新定义:

data_list = []
for line_str in data_file:

    # strip end-of-line, split on commas, and append items to list
    data_list =line_str.strip().split(',')

尝试将第一个更改data_list为类似data = []. 此外,您可以with在打开文件时使用,以便正确处理关闭之类的事情:

def get_data_list (file_name):
    with open(file_name, "r") as data_file:
        data = []
        for line_str in data_file:

            # strip end-of-line, split on commas, and append items to list
            data_list =line_str.strip().split(',')

            # Your definitions here...
            gp=int(data_list[6])
            # ...

            efficiency = ((pts+reb+asts+stl+blk)-((fga-fgm)+(fta-ftm)+to))/gp          
            data_list.append (efficiency)
            data.append(data_list)

    return data

但是,您也可以查看csv模块 - 看起来您正在处理逗号分隔的值,并且该模块提供了一个非常好的接口来处理它们。

于 2012-12-03T02:00:16.817 回答