本帖最后由 jackz007 于 2024-1-11 10:39 编辑 list_1=[]
temp=input("请输入括号:")
list_1[len(list_1):] = temp
stack1=[]
x = -1
for i in list_1:
if i == "(" or i == "[" or i == "{":
stack1 . append(i)
elif i == "]":
if stack1[x] =="[":
print("合法!")
x += -1
else:
print("非法")
break
elif i ==")":
if stack1[x] == "(":
print("合法!")
x += -1 # 这里有错,已做修正
else:
print("非法")
break
elif i == "}":
if stack1[x] == "{":
print("合法!")
x += -1 # 此句新加
else:
print("非法")
break
楼主的代码可以大幅度优化,这本身就是一个极好的学习机会d = {'}' : '{' , ']' : '[' , ')' : '('}
stack , r = [] , True
s = input('输入表达式:')
for x in s :
if x in '{[(' :
stack . append(x)
elif x in '}])' :
if stack and d[x] == stack[-1] :
stack . pop()
else :
r = False # 如果 stack 为空或者 stack 最后一个元素不能与当前括号匹配
break # 置非法标志
else :
if stack : # 如果右括号多于左括号,则循环完之后,stack 会不空
r = False # 置非法标志
print('合法') if r else print('非法')
|