1 回答
TA贡献1877条经验 获得超1个赞
你必须使用html_string而不是e在线
for symbol in html_string: # `html_string` instead` of `e`
就这样。
顺便说一句:最好在Stack()函数内部创建和使用 - 因此当您使用新字符串运行函数时,它将创建新的空堆栈。
编辑:完整功能
# --- functions ---
def check_html(html_string):
d = Stack()
balanced = True
for symbol in html_string:
if symbol == "(":
d.push(symbol)
elif symbol == ")":
if d.is_empty():
balanced = False
else:
d.pop()
if not d.is_empty(): # you forgot `()
balanced = False
print("Is it balanced? ", balanced)
# --- main ---
e = "10 - (3 + (2+1)*8)"
check_html(e)
check_html( e+')' )
如果你想check_html()在print()then 函数中使用,你应该return balanced使用of print()
# --- functions ---
def check_html(html_string):
d = Stack()
balanced = True
for symbol in html_string:
if symbol == "(":
d.push(symbol)
elif symbol == ")":
if d.is_empty():
balanced = False
else:
d.pop()
if not d.is_empty(): # you forgot `()
balanced = False
return balanced
# --- main ---
e = "10 - (3 + (2+1)*8)"
print("Is it balanced? ", check_html(e) )
print("Is it balanced? ", check_html( e+')' ) )
编辑:带有自己的类的完整工作示例Stack
# --- classes ---
class Stack:
def __init__(self):
self.data = []
def push(self, item):
self.data.append(item)
def pop(self):
return self.data.pop(-1)
def is_empty(self):
return len(self.data) == 0
# --- functions ---
def check_html(html_string):
d = Stack()
balanced = True
for symbol in html_string:
if symbol == "(":
d.push(symbol)
elif symbol == ")":
if d.is_empty():
balanced = False
else:
d.pop()
if not d.is_empty(): # you forgot `()
balanced = False
return balanced
# --- main ---
e = "10 - (3 + (2+1)*8)"
print("Is it balanced?", check_html(e) )
#print("Is it balanced?", check_html(e + ')') )
f = e + ')'
print("Is it balanced?", check_html(f) )
#print("Is it balanced?", check_html('('+e+')') )
f = '(' + e + ')'
print("Is it balanced?", check_html(f) )
#print("Is it balanced?", check_html('('+e) )
f = '(' + e
print("Is it balanced?", check_html(f) )
- 1 回答
- 0 关注
- 78 浏览
添加回答
举报