Football Results Tracker

football-soccer-ballYou have been asked to create a program to keep track of the scores from the football Premier League.

Your program will store match results in a text file using the following format:

home team;away team;home score;away score;

For instance, after a few games your text file may contain the following information:

Chelsea;Everton;2;0;
Liverpool;Arsenal;4;0;
Crystal Palace;Swansea City;0;2;
Newcastle United;West Ham United;3;0;
Manchester United;Leicester City;2;0;
Manchester City;Everton;1;1;
Swansea City;Manchester United;0;4;
Liverpool;Crystal Palace;1;0;

To complete this challenge you will need to read more about how to read through a CSV file.

Task 1:


Your program should include:

  • An option to input and append a new line / match score to the text file. To do so the program will:
    • Ask the user to input the name of the Home team,
    • Ask the user to input the name of the Away team,
    • Ask the user to input the Home Score (number of goals scored by the home team.),
    • Ask the user to input the Away Score (number of goals scored by the away team.),
    • Append all this information at the end of the text file.

Task 2:


Create another option where the program will:

  • Ask the user to display all the scores on screen using the following format:

Home Team – Home Score:Away Score – Away Team

Task 3:


Create a third option where the program will:

  • Allow the user to enter a team name to display all the results of this team.
  • Calculate and display the number of points of a team; knowing that a team scores 3 points for a win, 1 point for a draw and 0 point for a loss.

Top-Down Modular Design


This diagram represents the main components of our system:
top-down-modular-design-football-tracker

Python Code


We have started the code for you by implementing a basic menu structure. You task is to implement the code for each one of the three options:

Solution

Task 1: View Solution
Check the following addScore() function and see how you could use it to solve task 1:

def addScore():
  print("--- Adding New Score ---")
  homeTeam = input("Type the name of the home team:")
  awayTeam = input("Type the name of the away team:")
  homeScore = input("How many goals for " + homeTeam + "?")
  awayScore = input("How many goals for " + awayTeam + "?")
  
  #Append data at the end of the text file
  file = open("results.txt","a")
  file.write("\n" + homeTeam + ";" + awayTeam + ";" + homeScore + ";" + awayScore + ";")
  file.close()
  print("Your match score has now been added.")
Task 2: View Solution
Check the following displayResults() function and see how you could use it to solve task 2:

def displayResults():
  #Output all scores stored in the text file
  print("--- All Scores ---")
  file = open("results.txt","r")
  for line in file:
    data = line.split(";")
    homeTeam = data[0]
    awayTeam = data[1]
    homeScore = data[2]
    awayScore = data[3]
    print(homeTeam + " - " + homeScore + ":" + awayScore + " - " + awayTeam)
  file.close()
Task 3.a: View Solution
Check the following displayTeamResults() function used to perform a linear search on the text file to find all the scores of a given team (task 3 part a):

def displayTeamResults():
  print("--- Team Scores ---")
  team = input("Type the name of a team:")
  
  #Display all the scores for the given team using a linear search
  file = open("results.txt","r")
  for line in file:
    data = line.split(";")
    homeTeam = data[0]
    awayTeam = data[1]
    if team == homeTeam or team==awayTeam:
      homeScore = data[2]
      awayScore = data[3]
      print(homeTeam + " - " + homeScore + ":" + awayScore + " - " + awayTeam)
  file.close() 
Task 3.b: View Solution
Check the following displayTeamPoints() function used to perform a linear search on the text file to find all the scores of a given team and calculate the total league table points for this team (task 3 part b):

def displayTeamPoints():
  print("--- Team Scores ---")
  team = input("Type the name of a team:")
  points = 0
  numberOfGamesPlayed = 0
  
  #Display all the scores for the given team using a linear search
  file = open("results.txt","r")
  for line in file:
    data = line.split(";")
    homeTeam = data[0]
    awayTeam = data[1]
    if team == homeTeam or team==awayTeam:
      numberOfGamesPlayed += 1
      homeScore = int(data[2])
      awayScore = int(data[3])
      print(homeTeam + " - " + str(homeScore) + ":" + str(awayScore) + " - " + awayTeam)
      if homeScore == awayScore: #It's a draw
        points += 1
      elif homeScore>awayScore and team == homeTeam: #It's a win at home!
        points += 3
      elif awayScore>homeScore and team == awayTeam: #It's a win against the home team!
       points += 3  
  file.close() 
  print(team + " played " + str(numberOfGamesPlayed) + " game(s).")
  print(team + " has " + str(points) + " point(s) so far.") 
unlock-access

Solution...

The solution for this challenge is available to full members!
Find out how to become a member:
➤ Members' Area

Did you like this challenge?

Click on a star to rate it!

Average rating 3.7 / 5. Vote count: 24

No votes so far! Be the first to rate this post.

As you found this challenge interesting...

Follow us on social media!