Почитать про pep8:
к примеру:
otherTeams, enemyTeam и т.д. - так переменные называть не рекомендуется
За. f-strings уже сказали:
print('Имя:{0} Команда:{1} Здоровье:{2} Броня:{3} Оружие:{4}({5})'.format(w.name, w.team, w.health,
w.armor, w.weapon.name,w.weapon.damage))
меняется на более удобный вид:
print(
f'Имя:{w.name} '
f'Команда:{w.tem} '
f'Здоровье:{w.health}'
f'Броня:{w.armor}'
f'Оружие:{w.weapon.name}({w.weapon.damage})'
)
Эту конструкцию не очень понял:
if ([False]*self.teamscount[ltlive])==[x.is_alive for x in self.teams[ltlive]])
Ее можно заменить на что-то вроде
if not any([x.is_alive for x in self.teams[ltlive]])
?
или у вас массивы слева и справа по размерам могут не совпадать?
В остальном - вроде норм