• why not pass the test

 

I would like to give some feedback about ... the result is correct, but in the test a different result. I have 60, but it shows that 12

class Warrior:
def __init__(self):
    self.health = 50
    self.dam = 5
@property
def is_alive(self):
    if self.health > 0:
        return True
    else:
        return False

pass

class Knight(Warrior): def init(self): self.health = 50 self.dam = 7 pass

class Defender(Warrior): def init(self): self.health = 60 self.dam = 3 self.deff=2 pass

class Army(): def init(self): self.solder = [] def add_units(self, unit, numb): solder=[] for i in range(numb): self.solder.append(unit()) return solder pass

class Battle():

def fight(self, arm1, arm2):

    colarm1=0
    colarm2=0


    while (colarm1<len(arm1.solder)) and (colarm2<len(arm2.solder)):  

            if hasattr( arm1.solder[colarm1], 'deff'):
                arm2.solder[colarm2].dam=arm2.solder[colarm2].dam-arm1.solder[colarm1].deff
                if arm2.solder[colarm2].dam<=0:
                    arm2.solder[colarm2].dam=0

            if hasattr(arm2.solder[colarm2], 'deff'):
                arm1.solder[colarm1].dam=arm1.solder[colarm1].dam-arm2.solder[colarm2].deff
                if arm1.solder[colarm1].dam<=0:
                    arm1.solder[colarm1].dam=0


            while True:
                arm2.solder[colarm2].health=arm2.solder[colarm2].health-arm1.solder[colarm1].dam

                if arm2.solder[colarm2].health<=0:
                    if hasattr( arm2.solder[colarm2], 'deff'):
                        arm1.solder[colarm1].dam=arm1.solder[colarm1].dam+arm2.solder[colarm2].deff
                    colarm2+=1
                    break                
                arm1.solder[colarm1].health=arm1.solder[colarm1].health-arm2.solder[colarm2].dam

                if arm1.solder[colarm1].health<=0:
                    if hasattr( arm1.solder[colarm1], 'deff'):
                        arm2.solder[colarm2].dam=arm2.solder[colarm2].dam+arm1.solder[colarm1].deff
                    colarm1+=1
                    break

            if(colarm1==len(arm1.solder)):
                return False
            if(colarm2==len(arm2.solder)):
                return True    
        return 0
    pass

def fight(unit_1, unit_2):
    max=unit_1.health
    if hasattr(unit_1, 'deff'):
        unit_2.dam=unit_2.dam-unit_1.deff
        if unit_2.dam<=0:
            unit_2.dam=0

    if hasattr(unit_2, 'deff'):
        unit_1.dam=unit_1.dam-unit_2.deff
        if unit_1.dam<=0:
            unit_1.dam=0

    while max>0:


    unit_2.health=unit_2.health-unit_1.dam

    if unit_2.health<=0:
        return True
    unit_1.health=unit_1.health-unit_2.dam

    if unit_1.health<=0:
        return False
    if unit_2.health<unit_1.health:
        max=unit_2.health
    else:
        max=unit_1.health
return 0

From: https://py.checkio.org/mission/the-defenders/solve/

HTTP_USER_AGENT:

Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36