Присвоить объекты классу из большого списка и распечатать каждый из них? - PullRequest
1 голос
/ 28 февраля 2020

У меня есть файл, содержащий 3331 матч по регби, который содержит 9 атрибутов о каждом матче в каждой строке:

(дата, день, год, team_1, team_2, team_1_score, team_2_score, team_1_tries, team_2_tries, нейтральный ).

Пример данных:

15 Feb 1875, Mon, 1875, ENG, IRE, 7, 0, 2, 0, N
08 Mar 1875, Mon, 1875, SCO, ENG, 0, 0, 0, 0, N
13 Dec 1875, Mon, 1875, IRE, ENG, 0, 4, 0, 2, N

Я создал класс с именем Match для хранения этих данных и попытался реализовать метод для печати данных для каждого соответствия, вот что у меня есть для этого;

class Match:

def __init__(self, date, day, year, team_1, team_2, team_1_score, team_2_score, team_1_tries, team_2_tries, neutral):
    self.date=date
    self.day=day
    self.year=year
    self.team_1=team_1
    self.team_2=team_2
    self.team_1_score=team_1_score
    self.team_2_score=team_2_score
    self.team_1_tries=team_1_tries
    self.team_2_tries=team_2_tries
    self.neutral=neutral

def show(self):
    print("Date: " + self.date /n +
         "Day: " + self.day /n +
         "Year: " + self.year/n + 
         "Home Team :" + self.team_1 /n +
         "Home Team Score: " + self.team_1_score /n +
         "Home Team Tries: " + self.team_1_tries /n +
         "Away Team: " + self.team_2 /n +
         "Away Team Score: " + self.team_2_score /n +
         "Away Team Tries: " + self.team_2_tries /n +
         "Neutrality: " + self.neutral /n)

В этой части я думаю, что у меня возникли проблемы, нам нужно на самом деле go через мой файл ("RugbyResultsData.csv") и создать объект для каждого совпадения, наш лектор дал нам весь код, кроме одной строки, которую нам нужно откорректировать, но я не уверен, где с этим go, это первый год введения в курс программирования, и я не имею степени, связанной с CS per se (Математика).

#Adjust this code to create a list of Match objects

matches = list()
count = 0
with open('RugbyResultsData.csv') as f:
    for line in f:
        words = line.split(',')

        match = #Adjust code here

        matches.append(match)
        count = count + 1

print(str(count) + " matches loaded")`

Там, где написано «Настроить код здесь», я попытался составить список (слова), который может дать мне каждую строчку совпадения, но я не знаю, как это сделать. превратить эти данные в объекты. После этого мне нужно пройтись по каждому элементу класса и распечатать его.

Любая помощь приветствуется, извините, если это вопрос о новичке

1 Ответ

1 голос
/ 28 февраля 2020

Это работает:

class Match:
    def __init__(self, date, day, year, team_1, team_2, team_1_score, team_2_score, team_1_tries, team_2_tries, neutral):
        self.date=date
        self.day=day
        self.year=year
        self.team_1=team_1
        self.team_2=team_2
        self.team_1_score=team_1_score
        self.team_2_score=team_2_score
        self.team_1_tries=team_1_tries
        self.team_2_tries=team_2_tries
        self.neutral=neutral

    def show(self):
        print(
            "\n".join((
                "Date: " + self.date,
                "Day: " + self.day,
                "Year: " + self.year,
                "Home Team :" + self.team_1,
                "Home Team Score: " + self.team_1_score,
                "Home Team Tries: " + self.team_1_tries,
                "Away Team: " + self.team_2,
                "Away Team Score: " + self.team_2_score,
                "Away Team Tries: " + self.team_2_tries,
                "Neutrality: " + self.neutral
            ))
        )


matches = list()
count = 0

with open('RugbyResultsData.csv') as f:
    for line in f:
        words = line[:-1].split(',')

        match = Match(*words)

        matches.append(match)
        count = count + 1

print(str(count) + " matches loaded")

Как указывалось @ b_ c, ошибка была в show.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...