Прошу помощи с решением задачи.
Дано:
Вы решили создать компьютерную игру, в которую будет играть весь мир. Но, как известно, путь в тысячу верст начинается с первого шага.
Для начала вы решили написать класс, содержащий информацию об игроке. А поскольку игроков будет много, класс должен быть хорошо спроектирован. Для повышения качества кода вы решили снабдить класс аннотациями типов.
Итак, ваша задача написать класс Player, содержащий информацию об игроке, и снабдить его аннотациями типов. Класс должен иметь следующие атрибуты:
-
id — уникальный идентификатор игрока, целое число;
-
name — имя игрока, строка;
-
scores — набранные очки, целое число;
-
games — список игр, в которые сыграл данный игрок (укажите просто тип list без уточнения типа содержимого).
Конструктор принимает только id и name, а атрибуты scores и games инициализируются 0 и пустым списком.
У класса должен быть реализован метод add_result, принимающий два аргумента:
-
game_id — id игры;
-
scores — набранные очки.
Метод add_result должен сохранить id игры в списке games и прибавить набранные очки к общей сумме.
Метод get_mean должен вернуть средний балл по всем сыгранным играм (для этого нужно просто поделить количество набранных очков на количество сыгранных игр).
Все методы также должны быть снабжены аннотациями типов. Не забудьте про аннотацию типа возвращаемого значения (для методов, которые ничего не возвращают, это должен быть None). Аргумент self снабжать аннотацией типа не нужно (во-первых, его тип и так очевиден, во-вторых, это не так просто сделать — можете попробовать и убедиться сами).
Пример работы программы:
p = Player(1, 'Bilbo')
print(p.id) ⇒ 1
print(p.name) ⇒ Bilbo
print(p.scores) ⇒ 0
print(p.games) ⇒ []
p.add_result(15, 10)
p.add_result(21, 5)
print(p.scores) ⇒ 15
print(p.games) ⇒ [15, 21]
print(p.get_mean()) ⇒ 7.5
Моё решение:
#!/usr/bin/env python3
class Player:
def __init__(self, id: int, name: str) -> None:
self.id: int = id
self.name: str = name
self.scores: int = 0
self.games: list = []
def add_result(self, game_id: int, scores: int) -> None:
self.scores: int = self.scores + scores
self.games.append(game_id)
def get_mean(self) -> float:
return (self.scores / len(self.games))
p= Player(1, 'Bilbo')
print(p.id)
print(p.name)
print(p.scores)
print(p.games)
p.add_result(15, 10)
p.add_result(21, 5)
print(p.scores)
print(p.games)
print(p.get_mean())
Моё определение класса не проходит автоматическую проверку. Прошу подсказки где я прокалываюсь?