Не принимается вариант решения задачи на классы. ООП python
стоит задача:
- Создай класс Person. В данном классе определи конструктор, принимающий на вход следующие параметры: имя, фамилия, отчество, возраст, баллы за олимпиаду.
- Для класса Person определи метод print_information, который будет печатать на экран информацию об участнике в виде, указанном на картинке.
- В основной части программы запроси у пользователя, сколько участников он хочет ввести, и сформируй список из введенных участников.
- Запроси у пользователя фамилию участника и выведи на экран информацию о нем с помощью метода 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, у тебя там уже есть символ разделитель