Не принимается вариант решения задачи на классы. ООП python

стоит задача:

  1. Создай класс Person. В данном классе определи конструктор, принимающий на вход следующие параметры: имя, фамилия, отчество, возраст, баллы за олимпиаду.
  2. Для класса Person определи метод print_information, который будет печатать на экран информацию об участнике в виде, указанном на картинке.
  3. В основной части программы запроси у пользователя, сколько участников он хочет ввести, и сформируй список из введенных участников.
  4. Запроси у пользователя фамилию участника и выведи на экран информацию о нем с помощью метода print_information.
class Person:
    def __init__(self, name="Ivan", lastname="Ivanov", patronymic="Ivanovich", age=None, point=0):
        self.name = name
        self.lastname = lastname
        self.patronymic = patronymic
        self.age = age
        self.point = point

    def print_information(self):
        print("Имя: ", self.name)
        print("Фамилия: ", self.lastname)
        print("Отчество: ", self.patronymic)
        print("Возраст: ", self.age)
        print("Балл: ", self.point)

a = int(input("Сколько участников хотите ввести? "))
i = 0
b = []

while i < a:
    name, lastname, patronymic, age, point = input("Введите через пробел: имя фамилию отчество возраст баллы ").split()
    p = Person(name, lastname, patronymic, age, point)
    b.append(p)
    i = i + 1

a = input("Введите фамилию интересующего вас участника? ")

for i in range(len(b)):
    if b[i].lastname == a:
        b[i].print_information()

решенный вариант не принимается. Подскажите, что может быть не так?


Ответы (3 шт):

Автор решения: Андрей Таков

Я подозреваю что 3й пункт сложнее, судя по пояснению. Ты заполнил список b экземплярами класса Person, если запринтить этот список то получишь следующее: [<main.Person object at 0x0411D790>, ...] мне кажется тебе нужно заполнить список строками, в которые подставятся данные о участниках в виде: ['Иван Иванов Иванович 15 157', ...]

→ Ссылка
Автор решения: Timur

попробовал такой вариант. Также, не подходит

class Person:
    def __init__(self, name="Ivan", lastname="Ivanov", patronymic="Ivanovich", age=None, point=0):
        self.name = name
        self.lastname = lastname
        self.patronymic = patronymic
        self.age = age
        self.point = point

    def print_information(self):
        print("Имя: ", self.name)
        print("Фамилия: ", self.lastname)
        print("Отчество: ", self.patronymic)
        print("Возраст: ", self.age)
        print("Балл: ", self.point)

a = int(input("Сколько участников хотите ввести? "))
i = 0
b = []

while i < a:
    p = input("Введите через пробел: имя фамилию отчество возраст баллы ")
    b.append(p)
    i = i + 1

a = input("Введите фамилию участника? ")

for i in b:
    z = i.split()
    for j in z:
        if j == a:
            name, lastname, patronymic, age, point = z
            p = Person(name, lastname, patronymic, age, point)
            p.print_information()
→ Ссылка
Автор решения: Солт Семенов

Убери пробел при выводе на экран в методе print_information, у тебя там уже есть символ разделитель

→ Ссылка