Добавить положительное число опыта
class Adventurer:
"""Adventurer class."""
def __init__(self, name, class_type, power, experience=0):
"""Adventurer constructor.
:param name: player name.
:param class_type: character class.
:param power: character power.
:param experience: experience of character.
"""
self.name = name
self.power = power
if power > 99:
self.power = 10
if class_type == "Druid" or class_type == "Wizard" or class_type == "Paladin":
self.class_type = class_type
else:
self.class_type = "Fighter"
self.experience = experience
self.is_active = False
def add_experience(self, exp):
"""Add experience to adventurer."""
def add_power(self, power):
"""Add power to adventurer."""
self.power += power
def __repr__(self):
"""Representation of the adventurer."""
return f"{self.name}, the {self.class_type}, Power: {self.power}, Experience: {self.experience}."
Adventurer — это простой класс, представляющий игрового персонажа или искателя приключений. Вы понятия не имеете, почему другим игрокам требуется так много времени, чтобы создать такой простой объект. Этот класс имеет четыре переменные экземпляра: имя, тип_класса, power и опыт. Конструктор Adventurer выглядит так: init(self, name: str, class_type: str, power: int, experience: int = 0) name — это строка, которую не нужно как-либо проверять отдельно. class_type может быть одним из четырех слов: Fighter, Druid, Wizard, Paladin. Если кто-то попытается создать Adventurer с другим class_type, таким как Мистик или Чернокнижник, он будет вынужден стать Воином. Ваш друг обещает, что эти ограничения важны для повествования.
При печати объекта Adventurer вы должны увидеть следующий текст: [name], [class_type], Power: [power], Experience: [experience].
Power - это целое число, которое может быть как положительным, так и отрицательным. начальное значение силы не должно быть больше 99. Если вы пытаетесь создать Adventurer с силой больше 99, начальное значение силы должно быть 10. Experience также является целым числом, которое по умолчанию всегда равно 0. Experience не может быть отрицательным.
add_power(self, power: int)— Добавляет указанную сумму к показателю силы Adventurer.add_experience(self, exp: int)— Добавляет указанную сумму к опыту Adventurer. Если опыт Adventurer больше 99, результат деления опыта на 10 прибавляется к его показателю силы (результат округляется в меньшую сторону). Затем опыт необходимо сбросить.
Ответы (1 шт):
if exp > 99:
self.power + (exp // 10)
Adventurer. Если опыт Adventurer больше 99, результат деления опыта на 10 прибавляется к его показателю силы (результат округляется в меньшую сторону). Затем опыт необходимо сбросить.
Ошибки:
- Вы никуда не присваиваете результат произведённого вычисления
- Вы не сбросили опыт после пересчёта силы
Но это объясняет только второй assert. Откуда отрицательный опыт в первом ассерте - непонятно, такого вроде бы не должно получиться при инициализации, и что нужно проверять опыт на неотрицательность в add_experience - такого в задании нет, а только так он мог получиться отрицательным. Хотя, в основной части задания всё же написано:
Experience не может быть отрицательным.
Значит, всё-таки в add_experience нужно это проверять и это объясняет первый ассерт. Видимо, можно сделать это так же, как в конструкторе - то есть отрицательные числа приводить к нулю.