1 回答

TA貢獻1877條經(jīng)驗 獲得超1個贊
你必須使用html_string而不是e在線
for symbol in html_string: # `html_string` instead` of `e`
就這樣。
順便說一句:最好在Stack()函數(shù)內(nèi)部創(chuàng)建和使用 - 因此當(dāng)您使用新字符串運行函數(shù)時,它將創(chuàng)建新的空堆棧。
編輯:完整功能
# --- 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 函數(shù)中使用,你應(yīng)該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 關(guān)注
- 136 瀏覽
添加回答
舉報