0

这是一些示例数据

游戏 日期 主队 英尺 H T 客队
1 (星期五)2018 年 8 月 10 日(W32) 曼联 2-1 1-0 莱斯特城
2 (星期六)2018 年 8 月 11 日(W32) 亚足联伯恩茅斯 2-0 1-0 卡迪夫城
3 (星期六)2018 年 8 月 11 日(W32) 富勒姆 0-2 0-1 水晶宫
  1. 根据用户输入,提供特定球队在整个赛季中的总进球数。

  2. 向用户询问比赛编号并提供双方球队的名称和比赛得分。

这就是我到目前为止所拥有的(请注意,我不允许使用熊猫)......

def t_goals():

    f = open("EPL_18-19_HW2.txt")
    next(f)
    total_goals = 0
    for lines in f:
        game = lines.strip().split(',')
        goals = game[3].split("-")
        for num in goals:
            total_goals += int(num)


        f.close()
        return total_goals
4

2 回答 2

0

以下是我编写的一些快速函数,我认为它们可以实现您想要的。

对于第一个问题,检查您传递给函数的球队是主场还是客场,然后获取相应的分数并将其添加到 total_goals:

def get_total_goals(target_team='Manchester United FC'):

    total_goals = 0

    with open('sample.csv', 'r') as f:
        next(f)

        for line in f:

            current_home_team = line.strip().split(',')[2].strip()
            current_away_team = line.strip().split(',')[5].strip()

            if current_home_team == target_team:
                score = int(line.strip().split(',')[3].split('-')[0])
                total_goals += score

            elif current_away_team == target_team:
                score = int(line.strip().split(',')[3].split('-')[1])
                total_goals += score

        return total_goals

对于下一个问题,遍历行并检查游戏编号是否等于您传递给函数的游戏编号。如果匹配,则在字典中返回所需的详细信息,如果没有,则返回“找不到游戏”。

def get_game_details(game_number=1):
    with open('sample.csv', 'r') as f:
        next(f)
        
        for line in f:
            if int(line.strip().split(',')[0]) == game_number:
                return {
                    'HomeTeam':line.strip().split(',')[2], 
                    'AwayTeam':line.strip().split(',')[5], 
                    'FT':line.strip().split(',')[3], 
                    'HT':line.strip().split(',')[4]
                }
            
        return "Game not found"

这些应该为您提供一个起点,您可以根据用例的需要进行更改。您还可以使用anotherGatsby 在他们的回答中提到的python 中包含的默认csv 模块。

于 2021-09-15T06:16:50.210 回答
0

如果您不使用,请pandas使用内置csv模块(https://docs.python.org/3/library/csv)。

像这样阅读您的文件:

def t_goals():
    with open('your_csv_file.csv', 'r') as input:
        # create a reader for your file
        input_reader = csv.reader(input, delimiter=',')

        # skip the first line which has the column names
        next(input_reader)

        total_goals = 0

        # all the lines can be read by iteration
        for line in input_reader:
            # since all the values a line in a csv file are separated by comma, they are read as a list
            # so read the FT column with line[3]
            goals = line[3].split("-")
            for num in goals:
               total_goals += int(num)
            # if you open a file using 'with', you don't have to explicitly write the close statement
            return total goals
于 2021-09-15T05:51:49.177 回答