На первой же строке вы затолкнули '<' затем вытолкнули на '/', и на следующей итерации у вас balanced=False, потому что стек пуст. И далее в цикле значение balanced уже не меняется.
Я не видел ТЗ, но проверить баланс по скобочкам можно например так:
class Stack:
def __init__(self):
self.item = []
def push(self,item):
self.item.append(item)
def pop(self):
return self.item.pop()
def isEmpty(self):
return self.item==[]
def size(self):
return len(self.item)
def html(tag):
s = Stack()
for symbol in tag:
if symbol == "<":
s.push(symbol)
elif symbol == ">" and s.isEmpty():
return False
elif symbol == ">":
s.pop()
return True if s.isEmpty() else False
if __name__ == '__main__':
print(html('</html> </body> ,This is html! <body> </title> <title> </head> <head> <html>'))
print(html('<>title</>'))
print(html('</html> </body ,This is html! <body> </title> <title> </head> <head> <html>'))
print(html('>/html< </body> ,This is html! <body> </title> <title> </head> <head> <html>'))