lambda проблема с выводом . at 0x02B6A2F8>
Собственно, сам код.
class Player:
def __init__(self, name):
self.name = name
self.lvl = 1
self.xp = 0
self.hp = 10
self.streng = 1
self.agility = 1
self.damage = 1
self.points = 5
def set_skills(self):
while 1:
print(f"{self.streng} - Сила | {self.agility} - Ловкость") # Вывод
print("1) +1 steng\n2)+1 agility\n3)-1 steng\n4)-1 agility")
a = input(" : ")
if a == "1": self.streng = lambda: self.streng + 1 if self.points >= 1 else print("1")
a = Player("merka")
a.set_skills()
не могу понять, из за чего ругает лямбду. Вроде обращаюсь как и положено. В чём проблема?
Вывод в принте - <function Player.set_skills.. at 0x02B6A2F8> - Сила | 1 - Ловкость
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
во-первых в силе не хватает th
во вторых
self.streng = lambda: self.streng + 1 if self.points >= 1 else print("1")
делает следующее
- если
self.points >= 1, тоself.strengбудет функциейself.streng + 1 - иначе выведется
1, аself.strengбудетNone- это результат работы функции
вам именно такая логика нужна было?
а вам надо без всяких лямбда делать:
if a == "1":
self.streng = self.streng + 1 if self.points >= 1 else 1